點這裡看題目。
首先考慮只有洗衣機的情況。我們可以想到,當前洗衣任務結束越早的洗衣機應該被先用,因此可以用堆來動態維護。
再考慮有烘乾機的情況。很顯然,越晚洗完的衣服應該越早烘乾。因此我們可以按照處理洗衣機的方法,給衣服按照結束洗衣時間從大到小分配烘乾機。
用乙個堆對洗衣機和烘乾機各維護一次,時間\(o(k\log_2n)\)。
#include #include using namespace std;
typedef long long ll;
const int maxn = 1e5 + 5, maxk = 1e6 + 5;
templatevoid read( _t &x )
while( s >= '0' && s <= '9' )
x *= f;
}templatevoid write( _t x )
if( 9 < x )
putchar( x % 10 + '0' );
}template_t max( const _t a, const _t b )
struct ele
ele( ll t, int i )
bool operator < ( const ele &b ) const
};priority_queueq;
ll resa[maxk], resb[maxk];
int a[maxn], b[maxn];
int k, n, m;
int main()
while( ! q.empty() ) q.pop();
for( int i = 1 ; i <= m ; i ++ ) q.push( ele( b[i], i ) );
for( int i = k ; i ; i -- )
ll ans = 0;
for( int i = 1 ; i <= k ; i ++ ) ans = max( ans, resa[i] + resb[i] );
write( ans ), putchar( '\n' );
return 0;
}
雅禮集訓Day4
今天炸的1p。t1,給你100次詢問,每次l,r,選 l,r 中的若干數進行異或,求有多少種結果,1 l r 1e18.做法 暴力很顯然是將l,r這些數加入線性基,然後算一下線性基里有多少個數。我們可以考慮線性基的每一位最早在多久被加入。這個就可以看l了,它二進位制的最高位很顯然是一開始就加入線性基...
雅禮集訓Day4
今天炸的1p。t1,給你100次詢問,每次l,r,選 l,r 中的若干數進行異或,求有多少種結果,1 l r 1e18.做法 暴力很顯然是將l,r這些數加入線性基,然後算一下線性基里有多少個數。我們可以考慮線性基的每一位最早在多久被加入。這個就可以看l了,它二進位制的最高位很顯然是一開始就加入線性基...
雅禮集訓 2017 Day5 珠寶
題目描述 miranda 準備去市裡最有名的珠寶展覽會,展覽會有可以購買珠寶,但可惜的是只能現金支付,miranda 十分糾結究竟要帶多少的現金,假如現金帶多了,就會比較危險,假如帶少了,看到想買的右買不到。展覽中總共有 n種珠寶,每種珠寶都只有乙個,對於第 i種珠寶,它的售價為 ci 萬元,對 m...