题意:一个人有把耐久度为m(1<=m<=10^9)的刀,面对n(1<=n<=10^5)个敌人,杀死 i 敌人需要消耗刀ai耐久度,掉落参数为bi(0<=bi<=10)

的刀,敌人死后留下的刀可以杀死bi个敌人而不费耐久度,问能最多杀多少人,且杀最多人的时候耐久度消耗最小的值。

题解:将敌人分成两类,一类是bi为0,一类不为0,只要能杀死一个bi不为0敌人就能得到所有的bi。

分两种情况:1 只杀bi=0的敌人,这种情况排序从ai小的开始杀即可;

2 先把bi>0 && ai 最小的那个人杀死,然后其他人按照ai从小到大排序用耐久度杀,如果剩余人数<sum(bi)那么剩下的人用bi就可以杀死,

最后得到最优解。

Sure原创,转载请注明出处。

#include <iostream>
#include <cstdio>
#include <memory.h>
#include <algorithm>
#define MIN(a , b) ((a) < (b) ? (a) : (b))
using namespace std;
const int inf = 1 << 29;
const int maxn = 100002;
struct sword
{int a,b;bool operator < (const sword &other) const{return a < other.a;}
}guai[maxn],tmp;
int m,n;inline void in(int &a)
{char ch;while(ch = getchar(), ch < '0' || ch > '9');a = ch - '0';while(ch = getchar(), ch >= '0' && ch <= '9'){a = a * 10 + ch - '0';}return;
}void solve()
{in(n),in(m);int num = 0,cost = inf,sum = 0;int bj = -1,val = inf;for(int i=0;i<n;i++){in(guai[i].a),in(guai[i].b);sum += guai[i].b;if(guai[i].b > 0 && guai[i].a < val){val = guai[i].a;bj = i;}}tmp = guai[bj];guai[bj] = guai[n-1];guai[n-1] = tmp;if(m >= tmp.a){sort(guai,guai+n-1);int left = m - tmp.a;int cnt = 1;for(int i=0;i<n-1;i++){if(n-1-i <= sum) break;if(left >= guai[i].a){cnt++;left -= guai[i].a;}else break;}cnt += MIN(sum , n-1);num = cnt;cost = m - left;}sort(guai,guai+n);int cnt = 0,left = m;for(int i=0;i<n;i++){if(guai[i].b != 0) continue;if(guai[i].a <= left){left -= guai[i].a;cnt++;}else break;}if(num < cnt || (cnt == num && m - left < cost)){num = cnt;cost = m - left;}printf("%d %d\n",num,cost);return;
}int main()
{int cas;scanf("%d",&cas);for(int i=1;i<=cas;i++){printf("Case %d: ",i);solve();}return 0;
}

HDU 4415 Assassin’s Creed 苦逼的贪心相关推荐

  1. hdu 4415 Assassin’s Creed 贪心

    http://acm.hdu.edu.cn/showproblem.php?pid=4415 题意: Ezio 作为一个刺客他想杀掉n个人,他仅有的武器就是一把剑这把剑有攻击值m,每个人对应了两个值a ...

  2. Hdu 4415 Assassin's Creed 【贪心】.cpp

    题意: 某A有一个剑 坚韧度为m 他可以用这个剑去攻打别的队伍 杀掉第 i 个队伍需要消耗的坚韧度为 Ai 并可以用得到的剑去打别的队(Bi个) 但是打完别的队这个剑就不能用了 问怎么用最少的坚韧度击 ...

  3. SAP freelancer如何找到一个不苦逼的项目?

    SAP freelancer如何找到一个不苦逼的项目? 作为一个资深SAP freelancer, 笔者每年都要找新的SAP项目.笔者已经超过35岁,体力和精力远不如95后小朋友了.所以每次在找新的S ...

  4. 机器学习狗太苦逼了!自动化调参哪家强?

    机器学习狗太苦逼了!自动化调参哪家强? https://mp.weixin.qq.com/s/gqN0fDIJBoxyAxYaC2dI-w 作者|Facundo Santiago译者|李志编辑|Deb ...

  5. 技术人员,为什么会苦逼

       首先来谈谈为什么要有这篇文章,主要是最近一段时间的亲身经历后的所感.最近我们团队开始在全国范围内开始为很多的企业的项目进行性能调优.接触到了很多不同的人和事情,也看到了很多的现象,趁今天有点空闲 ...

  6. 让程序员不再苦逼的四大神器

    2019独角兽企业重金招聘Python工程师标准>>> 做程序猿「媛」是一个苦逼的活,大周六地早起在技术群里招呼,看到没有啥人响应,说了一句,「估计都没有醒」,然后一位哥们抛过来,「 ...

  7. cadence软件_IC苦逼搬运工入职之——Cadence基本操作(1)

    一入职场深似海,从此微软是路人.作为入职萌新,工作以来最棘手的就是环境问题--这不仅包括枯燥束缚的996,还有IC苦逼搬运工整天对着的Cadence操作软件,真是头大.下面总结几点很实用的操作: 1. ...

  8. 学习iBatis时的一个苦逼经历

    2012年8月6日 06:45:10这么早绝对不是想来印证这了一个职业段子:如果你看见一个程序员早上九点还在床上睡着,别去吵醒他,他刚睡不久:如果你在6点看见一个程序员在洗簌,别去理他,他一定是要准备 ...

  9. 【我拼搏的2016】-苦逼运维如何变身为SRE成长经历

    提起运维很多人能联想到的字眼就有"苦逼"."辛苦"."加班"."背锅",随着国内互联网大潮的兴起,特别是最近几年互联网行 ...

  10. Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖

    标题来源:Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路:最少的的人能够走全然图 明显是最小路径覆盖问 ...

最新文章

  1. CVPR 2018 FlowTrack:《End-to-end Flow Correlation Tracking with Spatial-temporal Attention》论文笔记
  2. NOIP2018——总结油记
  3. Java语言最新实用案例教程_Java 语言实用案例教程
  4. 《Web异步与实时交互——iframe AJAX WebSocket开发实战》—— 1.4 内容安排
  5. 随想录(设计软件模块的接口)
  6. 壁挂炉洗澡怎么调水温_壁挂炉水温太高怎么维修【调节壁挂炉温度】
  7. Java基础String类
  8. 使用jdk进行数据迁移(sqlite迁移mysql)
  9. 笔记| 计算机数据表示实验(HUST)| 汉字机内码获取实验
  10. 利用IV分析仪测量二极管的伏安特性的测量方法及步骤
  11. 微信公共号开发简单入门
  12. 程序员数学(15)--分式
  13. 谷歌:但使龙城飞将在 不教算法度阴山
  14. flutter 轮播组件 Swiper
  15. 小学教育如何利用计算机思维,浅谈如何在中小学编程教学中培养学生的计算思维...
  16. SpringBoot源码解析(十一)自定义banner
  17. crontab定时执行任务命令详解及crontab 误删除恢复
  18. 上网日志留存_日志留存系统
  19. 惯性导航累积误差的由来
  20. 小米5x有android 8.0,小米5X 8.0【Android 8.0】没错是8.0!

热门文章

  1. 如何查看Windows11系统是否为永久激活?
  2. beyond-长城-国语谐音歌词
  3. python科研向数据处理篇——python-pptx批量向PPT中插入图片
  4. Riverbed为用户优化网络效能并保护数据安全
  5. 解决win10计算机管理中没有本地用户和组
  6. 2017 年终总结 --- 忙碌而又颇有意义的一年
  7. OBS开源免费桌面视频直播工具/直播推流工具使用指南
  8. 拒做背锅侠!如何利用网站性能优化驱动产品体验提升
  9. plink遗传数据质控--每个个体QC、每个marker(变异)质控、全基因组关联meta分析QC
  10. 家庭和睦、人生平淡也是一种成功