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

 

posted @ 2014-08-07 19:50  radical  阅读(154)  评论(0编辑  收藏  举报