博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
湫湫系列故事——消灭兔子
阅读量:5079 次
发布时间:2019-06-12

本文共 1952 字,大约阅读时间需要 6 分钟。

湫湫系列故事——消灭兔子

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)

Total Submission(s): 2985    Accepted Submission(s): 984

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

 

Input
输入数据有多组,每组数据有四行;
第一行有两个整数N,M(1 <= N, M <= 100000),分别表示兔子的个数和箭的种类;
第二行有N个正整数,分别表示兔子的血量Bi(1 <= i <= N);
第三行有M个正整数,表示每把箭所能造成的伤害值Di(1 <= i <= M);
第四行有M个正整数,表示每把箭需要花费的QQ币Pi(1 <= i <= M)。
特别说明:
1、当箭的伤害值大于等于兔子的血量时,就能将兔子杀死;
2、血量Bi,箭的伤害值Di,箭的价格Pi,均小于等于100000。
 

 

Output
如果不能杀死所有兔子,请输出”No”,否则,请输出最少的QQ币数,每组输出一行。
 

 

Sample Input
3 3
1 2 3
2 3 4
1 2 3
3 4
1 2 3
1 2 3 4
1 2 3 1
 

 

Sample Output
6
4
 
这是一道用优先队列来求解的题,我一开始没有想到,自定义了一个sort结果时间超限,一直哇,然后仔细想如何优化
才勉强写出来,自己找bug还找了半天。
 
1 #include 
2 #include
3 #include
4 #include
5 #include
6 #define N 100005 7 using namespace std; 8 struct Node { 9 int a, b;10 } node[N];11 int m[N];12 int x, y;13 bool cmp(Node x1, Node x2) {14 return x1.a < x2.a;15 }16 priority_queue
, greater
> q;17 18 int main() {19 20 while (scanf("%d%d", &x, &y) != EOF) {21 while (!q.empty())22 q.pop();23 24 for (int i = 0; i < x; i++)25 scanf("%d", &m[i]);26 for (int i = 0; i < y; i++)27 scanf("%d", &node[i].a);28 for (int i = 0; i < y; i++)29 scanf("%d", &node[i].b);30 31 if (x > y) {32 printf("No\n");33 continue;34 }35 sort(m, m + x);36 sort(node, node + y, cmp);37 int ans = y - 1;38 long long int cnt = 0;39 bool pi = true;40 for (int i = x - 1; i >= 0; i--) {41 while (ans >= 0 && node[ans].a >= m[i]) {42 q.push(node[ans].b);43 ans--;44 }45 if (q.empty()){46 pi = false;47 break;48 }49 cnt += q.top();50 q.pop();51 }52 if (pi)53 printf("%lld\n", cnt);54 else55 printf("No\n");56 }57 return 0;58 }

 

 
 

转载于:https://www.cnblogs.com/zllwxm123/p/7241579.html

你可能感兴趣的文章
2013年工作总结
查看>>
连接到github
查看>>
vim-DrawIt
查看>>
如何用Fiddler手机抓包
查看>>
学好Mac常用命令,助力iOS开发
查看>>
rac one node在线relocation
查看>>
2565放大的X(hdu)
查看>>
重温数据结构系列随笔:单链表(c#模拟实现)
查看>>
读取线图层上的点,输出为点图层
查看>>
pku 1840 Eqs 哈希处理
查看>>
ucos任务优先级从64到256,任务就绪表的改变
查看>>
//C#中的访问数据符
查看>>
217. Contains Duplicate
查看>>
vue2.0 关于Vue实例的生命周期
查看>>
小小SQLServer,你懂的
查看>>
Spring系列之Spring常用注解总结
查看>>
Xamarin.Forms的ActivityIndicator和ProgressBar比较
查看>>
jenkins 更换主数据目录
查看>>
Silverlight中恼人的g.i.cs错误
查看>>
SQLite 数据库增删改查
查看>>