1191 消灭兔子

  1. 1 秒
  2. 131,072 KB
  3. 40 分
  4. 4 级题

有N只兔子,每只有一个血量B[i],需要用箭杀死免子。有M种不同类型的箭可以选择,每种箭对兔子的伤害值分别为D[i],价格为P[i](1 <= i <= M)。假设每种箭只能使用一次,每只免子也只能被射一次,计算要消灭地图上的所有兔子最少需要多少Q币。如不能杀死所有兔子,请输出No Solution。

特别说明:1、当箭的伤害值大于等于兔子的血量时,能将兔子杀死;2、血量B[i],箭的伤害值D[i],箭的价格P[i],均小于等于100000。

收起

输入

  1. 1行:两个整数NM,中间用空格分隔(1 <= N, M <= 50000),分别表示兔子的个数和箭的种类。
  2. 2 - N + 1行:每行1个正整数(共N行),表示兔子的血量B[i](1 <= B[i] <= 100000)。
  3. N + 2 - N + M + 1行:每行2个正整数(共M行),中间用空格分隔,表示箭所能造成的伤害值D[i],和需要花费的QP[i](1 <= D[i], P[i] <= 100000)。

输出

  1. 输出最少需要多少Q币才能消灭所有的兔子。如果不能杀死所有兔子,请输出"No Solution"

输入样例

  1. 3 3
  2. 1
  3. 2
  4. 3
  5. 2 1
  6. 3 2
  7. 4 3

输出样例

  1. 6

  1. #include<bits/stdc++.h>
  2. #include<stdio.h>
  3. #include<iostream>
  4. #include<cmath>
  5. #include<math.h>
  6. #include<queue>
  7. #include<set>
  8. #include<map>
  9. #include<iomanip>
  10. #include<algorithm>
  11. #include<stack>
  12. using namespace std;
  13. #define inf 0x3f3f3f3f
  14. typedef long long ll;
  15. int n,m;
  16. struct node
  17. {
  18. int d;
  19. int p;
  20. } nod[50005];
  21. int B[50005];
  22. bool cmp(node &n1,node &n2)
  23. {
  24. return n1.d>n2.d;
  25. }
  26. bool operator<(const node &n1,const node &n2)
  27. {
  28. return n1.p<n2.p;
  29. }
  30. priority_queue<int,vector<int>,greater<int> >q;
  31. int main()
  32. {
  33. #ifndef ONLINE_JUDGE
  34. freopen("in.txt","r",stdin);
  35. #endif // ONLINE_JUDGE
  36. scanf("%d%d",&n,&m);
  37. for(int i=0;i<n;i++)
  38. {
  39. scanf("%d",&B[i]);
  40. }
  41. for(int i=0;i<m;i++)
  42. {
  43. scanf("%d%d",&nod[i].d,&nod[i].p);
  44. }
  45. sort(nod,nod+m,cmp);
  46. sort(B,B+n,greater<int>());
  47. ll ans=0;bool ok=1;
  48. int j=-1;
  49. for(int i=0;i<n;i++)
  50. {
  51. while(nod[j+1].d>=B[i]&&j+1<m)
  52. {
  53. q.push(nod[j+1].p);
  54. j++;
  55. }
  56. if(!q.empty())
  57. {
  58. ans+=q.top();
  59. q.pop();
  60. }
  61. else {ok=0;break;}
  62. }
  63. if(!ok)printf("No Solution\n");
  64. else printf("%lld\n",ans);
  65. return 0;
  66. }

51 Nod 1191消灭兔子的更多相关文章

  1. 51nod 1191 消灭兔子

    题目来源: 2013腾讯马拉松赛第三场 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有N只兔子,每只有一个血量B[i],需要用箭杀死免子.有M种不同类型的箭可以 ...

  2. 51nod 1191:消灭兔子 贪心+优先队列

    1191 消灭兔子 题目来源: 2013腾讯马拉松赛第三场 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 有N只兔子,每只有一个血量B[i],需要 ...

  3. 湫湫系列故事——消灭兔子(hdu4544)

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

  4. 51 nod 1439 互质对(Moblus容斥)

    1439 互质对 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 有n个数字,a[1],a[2],…,a[n].有一个集合,刚开 ...

  5. 51 nod 1495 中国好区间

    1495 中国好区间 基准时间限制:0.7 秒 空间限制:131072 KB 分值: 80 难度:5级算法题   阿尔法在玩一个游戏,阿尔法给出了一个长度为n的序列,他认为,一段好的区间,它的长度是& ...

  6. 51 nod 1427 文明 (并查集 + 树的直径)

    1427 文明 题目来源: CodeForces 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 160 难度:6级算法题   安德鲁在玩一个叫“文明”的游戏.大妈正在帮助他. 这个游 ...

  7. 51 nod 1055 最长等差数列(dp)

    1055 最长等差数列 基准时间限制:2 秒 空间限制:262144 KB 分值: 80 难度:5级算法题 N个不同的正整数,找出由这些数组成的最长的等差数列.     例如:1 3 5 6 8 9 ...

  8. 51 nod 1421 最大MOD值

    1421 最大MOD值 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以 ...

  9. 51 nod 1681 公共祖先 (主席树+dfs序)

    1681 公共祖先 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题   有一个庞大的家族,共n人.已知这n个人的祖辈关系正好形成树形结构(即父亲向儿子连边). 在另 ...

随机推荐

  1. Markdown Note

    Markdown-Note 1.基本编辑 粗体和斜体 源代码: *斜体*或_斜体_ **粗体** ***加粗斜体*** ~~删除线~~ 显示效果: 斜体或_斜体_ 粗体 加粗斜体 删除线 分级标题 第 ...

  2. Asp.net core 学习笔记 ef core Surrogate Key, Natural Key, Alternate Keys

    更新: 2019-12-23 foreignkey 并不一样要配上 alternate key,其实只要是 unique 就可以了. 和 sql server 是一样的, 经常有一种错觉 primar ...

  3. @Html.ActionLink方法

    Html.ActionLink:MVC提供的自动构造重写地址的方法,该方法有五个重载 1.Html.ActionLink("linkText","actionName&q ...

  4. synchronized 底层实现原理

    线程在获取锁的时候,其指针指向的是一个monitor对象(由C++实现)的起始地址.每个对象实例都会有一个 monitor.其中monitor可以与对象一起创建.销毁:亦或者当线程试图获取对象锁时自动 ...

  5. react portals 插槽 实现简易弹窗

    Portal 提供了一种将子节点渲染到存在于父节点以外的DOM节点的优秀方案: 尽管 portal 可以被放置在 DOM 树中的任何地方,但在任何其他方面,其行为和普通的 React 子节点行为一致. ...

  6. 用表格制作商品购买页面--(table)

    实现效果如图: 首先来看布局,头部图片,内容从左到右分为四个部分   勾选+商品图片+商品名/买家+价格, 所以需要将头部用<td>包括起来,并且设置<td colspan=&quo ...

  7. Oracle 调试存储过程

    调试过程对找到一个存过的bug或错误是非常重要的,Oracle作为一款强大的商业数据库,其上面的存过少则10几行,多则上千行,免不了bug的存在,存过上千行的话,找bug也很费力,通过调试可以大大减轻 ...

  8. Vue.prototype详解

    参考地址:Vue.prototype详解 如果需要设置 全局变量,在main.js中,Vue实例化的代码里添加. 不想污染全局作用域.这种情况下,你可以通过在 原型 上定义它们使其在每个Vue实例中可 ...

  9. AOP底层实现原理,动态代理如何动态

    代理 指定另外一个主体代替原来的某个主体去执行某个事物 代理执行的人 需要代理的人 需要代理的事情是一定要做的 但是被代理的人没有时间或自己做的不专业 静态代理: 父母朋友帮忙物色找对象 代理人掌握需 ...

  10. Oracle使用基础

    1.Oracle的基本概念: 数据库:存储数据的数据库,Oracle一般只有一个全局数据库 XE,ORCL. EX:Express Edition 速成版 ORCL:企业版 SID:SID是Syste ...