题意:最近,减肥失败的湫湫为发泄心中郁闷,在玩一个消灭免子的游戏。
游戏规则很简单,用箭杀死免子即可。
箭是一种消耗品,已知有M种不同类型的箭可以选择,并且每种箭都会对兔子造成伤害,对应的伤害值分别为Di(1 <= i <= M),每种箭需要一定的QQ币购买。
假设每种箭只能使用一次,每只免子也只能被射一次,请计算要消灭地图上的所有兔子最少需要的QQ币。

链接:点我

贪心在能杀死某个兔子的箭里选择价格最小的

一开始直接两个for,tle,看了别人代码之后才知道用优先队列

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<queue>
 7 #include<map>
 8 using namespace std;
 9 #define MOD 1000000007
10 const int INF=0x3f3f3f3f;
11 const double eps=1e-5;
12 #define cl(a) memset(a,0,sizeof(a))
13 #define ts printf("*****\n");
14 const int MAXN=100005;
15 int b[MAXN],d[MAXN],p[MAXN];
16 int n,m,tt;
17 struct node
18 {
19     int d,p;
20 }a[MAXN];
21 bool cmp1(node a,node b)
22 {
23     return a.d>b.d;
24 }
25 struct cmp
26 {
27     bool operator()(int x,int y)
28     {
29         return x>y;
30     }
31 };
32 priority_queue<int,vector<int>,cmp > q;
33 bool vis[MAXN];
34 int main()
35 {
36     int i,j,k;
37     #ifndef ONLINE_JUDGE
38     freopen("1.in","r",stdin);
39     #endif
40     while(scanf("%d%d",&n,&m)!=EOF)
41     {
42         while(!q.empty())   q.pop();
43         for(i=0;i<n;i++)    scanf("%d",&b[i]);
44         for(i=0;i<m;i++)    scanf("%d",&a[i].d);
45         for(i=0;i<m;i++)    scanf("%d",&a[i].p);
46         sort(b,b+n);
47         sort(a,a+m,cmp1);
48         long long ans=0;
49         bool f=1;
50         int t=0;
51         for(i=n-1;i>=0;i--)
52         {
53             while(t<=m-1&&a[t].d>=b[i])
54             {
55                 q.push(a[t].p);
56                 t++;
57             }
58             if(q.empty())
59             {
60                 f=0;
61                 break;
62             }
63             ans+=q.top();
64             q.pop();
65         }
66         if(!f)  printf("No\n");
67         else printf("%I64d\n",ans);
68     }
69 }

转载于:https://www.cnblogs.com/cnblogs321114287/p/4472922.html

hdu 4544 优先队列+贪心相关推荐

  1. hdu 4544 优先队列

    湫湫系列故事--消灭兔子 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  2. HDU 4544 湫湫系列故事——消灭兔子 (贪心+优先队列)

    题目链接:HDU 4544 题面: 湫湫系列故事--消灭兔子 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K ...

  3. hdu 4544 湫湫系列故事——消灭兔子

    原题: http://acm.hdu.edu.cn/showproblem.php?pid=4544 //hdu 4544 //思路:为每一只兔子找能够杀死自己并且花费Q币最少的箭,关键在于不要超时, ...

  4. LeetCode 1642. 可以到达的最远建筑(二分查找 / 优先队列贪心)

    文章目录 1. 题目 2. 解题 2.1 二分查找 2.2 优先队列+贪心 1. 题目 给你一个整数数组 heights ,表示建筑物的高度.另有一些砖块 bricks 和梯子 ladders . 你 ...

  5. 【CF 732E】Sockets(优先队列+贪心)

    [CF 732E]Sockets(优先队列+贪心) 题目大意: n台电脑,m个供电器. 每台电脑和每个供电器都有电量,当电脑i的电量和供电器j电量相同时,可以连接供电. 现在提供变压器,可以连接到供电 ...

  6. HDU - 4544 湫湫系列故事——消灭兔子 贪心+优先队列

    1.题意: 箭是一种消耗品,已知有M种不同类型的箭可以选择,并且每种箭都会对兔子造成伤害,对应的伤害值分别为Di(1 <= i <= M),每种箭需要一定的QQ币购买.  假设每种箭只能使 ...

  7. *【HDU - 5711】Ingress(tsp旅行商问题,优先队列贪心,状压dp,floyd最短路,图论)

    题干: Brickgao, who profited from your accurate calculating last year, made a great deal of money by m ...

  8. hdu 5248(二分+贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5248 解题思路:这道题我原本的思路是动态规划,结果看到数很大,结果放弃了.然后想到二分,思路是对的,只 ...

  9. hdu 5246(贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5246 解题思路:先排序,在采用贪心的方法,先给百小度找到合适的初始战斗力,找到比初始战斗力上限小的中最 ...

最新文章

  1. 乘风破浪的马里奥!这个AI带你一口气通29关,你猜连AI都过不去的是哪3关?
  2. Sql Server查询语句的一些小技巧
  3. 文本处理三剑客之sed
  4. 深入理解Java的整型类型:如何实现2+2=5?
  5. 覆盖所有面试知识点,持续更新中
  6. java 线程 函数_java – 从后台线程调用主线程上的函数
  7. JS面向对象程序设计(OOP:Object Oriented Programming)
  8. 使用phpize建立php扩展(Cannot find config.m4)
  9. java中用流提取文档中的文字,语言实现从word文档中提取文本
  10. mysql存储过程核销_mysql存储过程
  11. [vSphere培训实录]8G内存笔记本搭建vSphere测试环境
  12. 服务器上域名打不开网站,域名打不开网站
  13. docker容器跨宿主机通信
  14. Tomcat下JSP环境的配置
  15. 你有在为大学时选的专业后悔吗?
  16. Java实现消息队列服务
  17. wamp5环境配置基础教程
  18. Java二维数组的错误写法分析
  19. 搞懂redux一篇就够了
  20. 热更新你都知道哪些?

热门文章

  1. micropython实现mpy的ota(有用,推荐)
  2. VBA破解Excel表格保护密码
  3. 搜狗微信为什么搜不到服务器,搜狗微信搜索部分功能为什么下线 搜狗微信搜索部分功能将被下线详情介绍...
  4. 大型API网关(六)—— 监控和预警
  5. C++实现九九乘法 (by yzs-device)
  6. 信号之零输入和零状态响应
  7. python3的numpy包中的numpy.logspace解析
  8. github语法使用
  9. android 6.0 Launcher3 去掉抽屉式,显示所有 app
  10. 企业如何构建内部开发者平台?