[HDU4415]Assassin’s Creed
题目传送门
题意
你有一把耐久度为 mmm 的刀,每次杀一个敌人需要 aia_iai 的耐久度,同时得到一个能杀 bib_ibi 个人的刀,问你最多能杀多少个敌人和最小的花费。
解题方法
可以讨论 bib_ibi 是否大于0,我们考虑两种贪心策略,第一种是按 aia_iai 为关键字排序从小到大杀,第二种我们就是优先杀一个 bi>0b_i>0bi>0的人,然后看看能不能杀全场,如果不能就从大到小杀,费耐久度的从小到大杀就可以了。
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
struct node
{int a,b;
}p[200010];
int n,m;
int ans1,ans2,cost1,cost2;
bool comp(node x,node y)
{return x.a<y.a;
}
void work1()
{int ci=0;int now=m;int i;for(i=1;i<=n;i++){if(now-p[i].a>=0){ans1+=0;cost1+=p[i].a;now-=p[i].a;ci+=p[i].b;}else{break;}}for(int j=i;j<=n;j++){if(ci==0)break;ans1++;ci--;ci+=p[j].b;if(ci==0)break;}return;
}
bool vis[100005];
void work2()
{int now=n+1;for(int i=1;i<=n;i++)if(p[i].b){now=i;break;}
// cout<<now<<"#$%^#$"<<'\n';if(now==n+1)return;
// puts("14124124");if(p[now].a>m)return;
// puts("14124124");int tot=0;for(int i=1;i<=n;i++)tot+=p[i].b;
// cout<<tot<<" "<<now<<"#$%^#$"<<'\n';if(tot+1>=n){ans2=n;cost2=p[now].a;return;}memset(vis,0,sizeof(vis));vis[now]=1;ans2=tot+1;for(int i=n;i;i--){if(!vis[i]){tot-=1;vis[i]=1;if(tot==0)break;}}cost2=p[now].a;for(int i=1;i<=n;i++){if(!vis[i]){if(m-cost2-p[i].a>=0){cost2+=p[i].a;ans2++;}else{break;}}}return;
}
int main()
{int t;scanf("%d",&t);for(int ci=1;ci<=t;ci++){scanf("%d%d",&n,&m);ans1=ans2=cost1=cost2=0;for(int i=1;i<=n;i++){scanf("%d%d",&p[i].a,&p[i].b);}sort(p+1,p+n+1,comp);cout<<"Case "<<ci<<": ";work1();work2();
// cout<<ans1<<" "<<ans2<<" ";if(ans1>ans2||(ans1==ans2&&cost1<cost2)){cout<<ans1<<" "<<cost1<<'\n';}else{cout<<ans2<<" "<<cost2<<'\n';}}return 0;
}
[HDU4415]Assassin’s Creed相关推荐
- Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖
标题来源:Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路:最少的的人能够走全然图 明显是最小路径覆盖问 ...
- pcss评分_[刺客信条:大革命 v1.4升级档+免DVD补丁RELOADED版[修正BUG|提高稳定性]][Assassin’s Creed: Unity][1.5G][2014]...
使用说明: 1.解压缩 2.运行update文件夹下的setup.exe安装升级档 3.复制Crack文件夹下的文件覆盖到游戏目录 3.开始游戏 注:安装本升级档之前需要安装 刺客信条:大革命 v1. ...
- Hdu 4415 Assassin's Creed 【贪心】.cpp
题意: 某A有一个剑 坚韧度为m 他可以用这个剑去攻打别的队伍 杀掉第 i 个队伍需要消耗的坚韧度为 Ai 并可以用得到的剑去打别的队(Bi个) 但是打完别的队这个剑就不能用了 问怎么用最少的坚韧度击 ...
- hdu 4415 Assassin’s Creed 贪心
http://acm.hdu.edu.cn/showproblem.php?pid=4415 题意: Ezio 作为一个刺客他想杀掉n个人,他仅有的武器就是一把剑这把剑有攻击值m,每个人对应了两个值a ...
- 【Assassin's Creed】v刺客信条 中文版V3.1.7 gameloft经典动作游戏
<刺客信条>将采用新颖的游戏方式,同时结合了引人入胜的故事情节,必将呈现给玩家一幅精彩纷承的画面.系列游戏第一部的时间背景设定在191年,第三次十字军东征使圣地耶路撒冷蒙受了巨大灾难.为了 ...
- python26.dll没有发现_python26.dll 文件下载
通常来说,一个文件有很高的几率出现在某些路径(因为大部分的软件和操作系统都会将一些用到的文件复制或创建到固定的路径) .经统计,python26.dll 文件通常会出现在以下路径,以下是每一个路径的使 ...
- 塔拉 孤岛危机2_2月15日新作密集周Xbox游戏热度排行公布《Apex英雄》登顶《除暴战警3》战役模式名列前3...
今天(2月19日)一份2月15日当周Xbox游戏热度排行统计公布,这份热度统计数据来源自抽样的Xbox玩家游戏活跃情况与成就解锁数据,在一定程度的反映了近期发售新作的受欢迎程度和品质.对于有<除 ...
- vista下载_Vista和视图在游戏设计中的功能
vista下载 Views in video games are observation points used to highlight a lot of objects into one fram ...
- 火焰和烟雾的训练图像数据集_游戏开发者是烟雾和镜子的大师
火焰和烟雾的训练图像数据集 Video games are incredible. They transport us to new worlds, allow us to partake in ot ...
最新文章
- linux 定时任务 crontab 报错 service command not found 解决方法
- html5--6-59 其他常用CSS属性
- Linux 还能这么玩,10 个非常有趣的命令!
- mysql 多表查询 join on_mysql多表查询
- 职场上个人的核心技术_职场上,这3种人表面老实,实际却是个“高手”,要远离...
- django入门项目图书管理
- Intel Core Enhanced Core架构/微架构/流水线 (12) - 数据预取
- rose-scanning reading
- webpack 3 零基础入门教程 #16 - 使用 ProvidePlugin 插件来处理像 jQuery 这样的第三方包...
- C语言实例第8期:模拟银行账户登陆
- 机械优化设计c语言鲍威尔法,机械优化设计C语言程序.doc
- app版windows95
- 服务器之IP地址与域名之间的绑定
- Nvidia NX平台控制台调试串口修改调试记录
- 你可以和十八岁一无所有的男生谈恋爱,但是当他二十八岁的时候还是一无所有,我劝你趁着离开。...
- 接口测试面试题汇总(含答案)
- JavaScript关于exec()函数的理解
- 在Windows 10上安装GCC
- 单片机的延时与中断问题及解决方法
- 《三体1》7.三体1、周文王、长夜