码迷,mamicode.com
首页 > 其他好文 > 详细

地鼠游戏 Codevs No.1245

时间:2016-05-31 18:49:55      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

2016-05-31 18:22:32

题目链接: 地鼠游戏 Codevs No.1245

题目大意:

  打地鼠,一开始所有地鼠都出现,但是维持的时间(s)和击中所得的积分各不同,求出采用最优策略(1s打一个)打地鼠所得

解法:

  贪心+堆优化

  按时间倒着选,每次将当前时间结束的地鼠加入集合

  每秒在最大堆中取最上端的点加入答案即可

需要注意的地方:

  1.时间顺序一定要对,正着选是错的

 1 //地鼠游戏 (Codevs No.1052)
 2 //贪心
 3 #include<stdio.h>
 4 #include<algorithm>
 5 #include<queue>
 6 using namespace std;
 7 const int maxn=110;
 8 struct node
 9 {
10     int key;
11     int time;
12 };
13 node F[maxn];
14 bool comp(node a,node b)
15 {
16     return a.time>b.time;
17 }
18 priority_queue <int> q;
19 int ans;
20 int N;
21 int main()
22 {
23     scanf("%d",&N);
24     for(int i=1;i<=N;i++)scanf("%d",&F[i].time);
25     for(int i=1;i<=N;i++)scanf("%d",&F[i].key);
26     sort(F+1,F+N+1,comp);
27     int now=F[1].time;
28     int loc=1;
29     while(now)
30     {
31         while(F[loc].time==now)
32         {
33             q.push(F[loc].key);
34             loc++;
35         }
36         if(!q.empty())
37         {
38             ans+=q.top();
39             q.pop();
40         }
41         now--;
42     }
43     printf("%d",ans);
44     return 0;
45 }

 

地鼠游戏 Codevs No.1245

标签:

原文地址:http://www.cnblogs.com/Neptune-/p/5546931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!