虽然标题名上挂着 优先队列 我懒得去写遍了 因为感觉没太大意义啊=-=
就是将for i 1->n变成了qe.top() qe.pop() qe.empty().........
这题 不难 它的另外一题 doing homework难啊 我至今不会 状态压缩DP =学会了的时候 再写那题
看下 代码 大概就能明白意思了 不清楚 或者 我写错了的地方 和我互动起来
最近多寂寞啊
还好 亲爱的步行街jrs最近 制造了太多欢乐
不幸中的万幸 香蕉还是蛮好吃的=-= 萌萌哒
家有百万富可敌国
1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 using namespace std; 5 6 const int size = 1010; 7 struct data 8 { 9 int day , cost; 10 }work[size]; 11 bool vis[size]; 12 bool cmp( const data p , const data q ) 13 { 14 if( p.cost == q.cost ) 15 return p.day < q.day; 16 return p.cost > q.cost; 17 } 18 19 int main() 20 { 21 cin.sync_with_stdio(false); 22 int i , j , n , t , sum; 23 bool flag; 24 while( cin >> t ) 25 { 26 while( t-- ) 27 { 28 sum = 0; 29 cin >> n; 30 for( i = 1 ; i<=n ; i++ ) 31 { 32 cin >> work[i].day; 33 } 34 for( i = 1 ; i<=n ; i++ ) 35 { 36 cin >> work[i].cost; 37 } 38 memset( vis , false , sizeof(vis) ); 39 sort( work+1 , work+n+1 , cmp); 40 for( i = 1 ; i<=n ; i++ ) 41 { 42 flag = false; 43 for( j = work[i].day ; j>=1 ; j-- ) 44 { 45 if( !vis[j] ) 46 { 47 vis[j] = true; 48 flag = true; 49 break; 50 } 51 } 52 if(!flag) 53 sum += work[i].cost; 54 } 55 cout << sum << endl; 56 } 57 } 58 return 0; 59 }