赚经验
来源:互联网 发布:谭维维唱功知乎 编辑:程序博客网 时间:2024/06/01 03:58
题目描述
小明在玩一款电脑游戏,里面有一关是这样的:
战场上有n个敌人,小明必须把他们全部打败才能通过这关,不过战斗顺序可以小明自己决定。小明如果打败一个比自己经验值高的敌人,那么小明会赚取2点经验值,否则赚取1点经验值。
现在给你小明初始时的经验值和n个敌人的经验值,你能计算出小明最后经验值最高可以到多少吗?
输入格式
输入包含多组测试数据。
每组第一行输入两个正整数N(N<=500)和E(E<=1000),N表示敌人的个数,E表示小明初始时的经验值。
接下来一行输入N个正整数,表示每个敌人的经验值,所有经验值均不超过1000。
输出
对于每组输入,输出小明最后可以到达的最高经验值。
样例输入
5 91
88 90 92 94 98
样例输出
99
分析:
很简单的一道贪心题,先把比小明经验值大的敌人按照经验值从小到大排序,然后从这些人中经验值最小的那个敌人开始逐一打败,最后再打败那些一开始经验值就比小明低的敌人,这就是最优解。
源码:
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;int a[1009];int main(){ int m,n; while(scanf("%d%d",&m,&n)!=EOF) { for(int i=0;i<m;i++) scanf("%d",&a[i]); sort(a,a+m); int w=0; for(int j=0;j<m;j++) { if(a[j]>n) { n+=2; w++; } } int p; p=m-w; n+=p; printf("%d\n",n); } return 0;}
- 赚经验
- 经验
- 经验
- 经验
- 经验
- 经验
- 经验
- 经验
- 经验
- 经验
- 经验
- 经验
- 经验
- 经验
- 经验
- 经验
- 经验
- 经验
- Struts2.3.1 中整合DWR3.0 实现文件上传
- fedora 19/20 gnome 3.8 用fcitx 替换 ibus
- MVC已过时,MOVE时代来临?(转载)
- C++函数的实现
- wcf研究1
- 赚经验
- DBUtils超快速入门指南
- 安装scrapy
- RQNOJ 49 加分二叉树 (树形DP)
- 【Java】IO操作之对象序列化及反序列化
- HDU-1233-还是畅通工程
- 记录一些算法(以后会不断添加)
- AFX_MANAGE_STATE(AfxGetStaticModuleState())用法意义
- CSDN的博客积分计算规则及博客排名规则