首页 > 代码库 > hdu--1789--贪心||优先队列

hdu--1789--贪心||优先队列

虽然标题名上挂着 优先队列  我懒得去写遍了 因为感觉没太大意义啊=-=

就是将for i 1->n变成了qe.top()  qe.pop()  qe.empty().........

这题 不难 它的另外一题  doing homework难啊 我至今不会 状态压缩DP  =学会了的时候 再写那题

      touch   me

看下 代码 大概就能明白意思了  不清楚 或者 我写错了的地方 和我互动起来

最近多寂寞啊

还好 亲爱的步行街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 }
View Code