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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了湫湫系列故事——消灭兔子相关的知识,希望对你有一定的参考价值。

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
 

Source
2013腾讯编程马拉松复赛第三场(3月31日)
 

Recommend
liuyiding   |   We have carefully selected several similar problems for you:  5634 5633 5632 5631 5630 
 

多多少少有一点无语,等有机会了一定要问问  马化腾  这个后台数据是啥 

 1 #include<stdio.h>
 2 #include<algorithm>
 3 using namespace std;
 4 struct arrow
 5 {
 6     __int64 d,p;
 7 };
 8 bool cmp(__int64 a,__int64 b)
 9 {
10     return a>b;
11 }
12 bool cmp1(arrow a,arrow b)   //  按照 Q币的升序 排序
13 {
14     return a.p<b.p;
15 }
16 int main()
17 {
18     __int64 n,i,j,m,jishu,b[10011],count,num;
19     arrow a[100011];
20     while(scanf("%I64d%I64d",&n,&m)!=EOF)
21     {
22         num=count=0;
23         for(i=0;i<n;i++)
24             scanf("%I64d",&b[i]);
25         for(i=0;i<m;i++)
26             scanf("%I64d",&a[i].d);
27         for(i=0;i<m;i++)
28             scanf("%I64d",&a[i].p);
29         sort(b,b+n,cmp);          //   兔子的 血量 降序
30         sort(a,a+m,cmp1);   //箭的 加个 升序
31         for(i=0,num=n;i<n;i++)  //从最厉害的  兔子开始杀
32         {
33             for(j=0;j<m;j++) //  从最便宜的 箭  开始 一个一个试
34             {
35                 if(a[j].d==-1)
36                     continue;
37                 if(a[j].d>=b[i])  //如果 箭的伤害 大于兔子的血量的话.
38                 {
39                     a[j].d=-1;                //该  箭   失效           //这一句和下一句如果加上 就超时 如果不加上 就300ms.........
40                     num--;
41                     count=count+a[j].p;            //计算  花费
42                     break;
43                 }
44             }
45         }
46         if(num==0)
47             printf("%I64d\n",count);
48         else
49             printf("No\n");
50     }
51 }

 

以上是关于湫湫系列故事——消灭兔子的主要内容,如果未能解决你的问题,请参考以下文章

HDU-4544 湫湫系列故事——消灭兔子

hdu 4544 湫湫系列故事——消灭兔子 优先队列+贪心

2017ecjtu-summer training # 9 HDU 4544

HDU 4514 湫湫系列故事――设计风景线 (树形DP)

HDU 4514 湫湫系列故事——设计风景线(并查集+树形DP)

HDU4522 湫湫系列故事——过年回家