HDU4415 Assassin’s Creed
题目大意:有n个人,每个人有x,y两个值。x代表干掉他得到的分数,分数和不超过m;y代表干掉他后你能额外干掉多少个,且不计入总分。
求干掉人数最多为多少,以及最小的分。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
考试最后40分钟想出正解贪心,思路太乱没时间码导致20。
直接说正解:优雅的贪心
如果将y为0的放入a集,其余放入b集,那么正解只能有两种情况:
1.只从a中拿。
2.拿走全部的b,剩下将b从小到大排序后去掉最小,然后将b并入a中,再从a中拿。
为什么是这样的?
首先我们可以知道,只要拿走一个b,可以带出全部的b。
这样的话可以想象将bi建成一棵树:
b1->b2->b3
\
>b4->b5
\
>b6
假设它是一棵树
假设干掉b2要100块钱,还有一个a2要200块钱。
这样我们可以先干掉b2,花100,然后b1就少了一个儿子,在把a2放进去,就是:
b2->b3
b1->a2
\
>b4->b5
\
>b6
这样就是花100块钱干掉a2了。
我们还发现,b1是不能被置换的,因为它没有父亲。
所以正解:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 100050
#define ll long long
int T,n,ac,bc;
ll ax[N],bx[N],by[N],m;
bool cmp(ll x,ll y)
{
return x<y;
}
int cs;
int main()
{
scanf("%d",&T);
while(T--)
{
cs++;
printf("Case %d: ",cs);
scanf("%d%I64d",&n,&m);
ll sy = ;
ac=bc=;
for(int i=;i<=n;i++)
{
bc++;
scanf("%I64d%I64d",&bx[bc],&by[bc]);
if(!by[bc])
{
ax[++ac]=bx[bc];
bc--;
continue;
}
sy+=by[bc];
}
sort(ax+,ax++ac,cmp);
ll ans1 = ;
ll ans2 = ;
for(int i=;i<=ac;i++)
{
if(ans2+ax[i]<=m)
{
ans1++;
ans2+=ax[i];
}else
{
break;
}
}
if(!bc)
{
printf("%I64d %I64d\n",ans1,ans2);
continue;
}
sort(bx+,bx++bc,cmp);
ll ans3 = sy;
ll ans4 = bx[];
if(ans4>m)
{
printf("%I64d %I64d\n",ans1,ans2);
continue;
}
for(int i=;i<=bc;i++)
{
ax[++ac] = bx[i];
}
sort(ax+,ax++ac,cmp);
for(int i=;i<=ac;i++)
{
if(ans3>=n)
{
ans3=n;
break;
}
if(ans4+ax[i]<=m)
{
ans3++;
ans4+=ax[i];
}
}
if(ans1>ans3||(ans1==ans3&&ans2<ans4))printf("%I64d %I64d\n",ans1,ans2);
else printf("%I64d %I64d\n",ans3,ans4);
}
return ;
}
HDU4415 Assassin’s Creed的更多相关文章
- ACM学习历程—HDU4415 Assassin’s Creed(贪心)
Problem Description Ezio Auditore is a great master as an assassin. Now he has prowled in the enemie ...
- HDU-4415 Assassin’s Creed 贪心
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4415 用贪心来解,开始分为两个集合的方法错了,没有考虑之间的相互影响,正确的姿势应该是这样的,分两种情 ...
- Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖
题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...
- Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖
标题来源:problem=1406">Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路: ...
- Light OJ 1406 Assassin`s Creed 状态压缩DP+强连通缩点+最小路径覆盖
题目来源:Light OJ 1406 Assassin`s Creed 题意:有向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路:最少的的人能够走全然图 明显是最小路径覆盖问题 ...
- HDU 4415 - Assassin’s Creed
Problem Description Ezio Auditore is a great master as an assassin. Now he has prowled in the enemie ...
- [GodLove]Wine93 Tarining Round #7
比赛链接: http://vjudge.net/contest/view.action?cid=47643#overview 比赛来源: 2012 ACM/ICPC Asia Regional Han ...
- 微软Nokia 222:可拍照可上网 售价37美元 32GB的microSD卡扩展
腾讯科技讯 8月27日,在几乎所有厂商都在智能手机领域大肆拼杀的时候,微软日前却悄悄地发布了一款功能手机Nokia 222. 目前,尽管全球许多发达国家的居民都对互联网已经再熟悉不过了,但事实上全球依 ...
- [ZZ] GTX 280 GPU architecture
http://anandtech.com/show/2549 Now that NVIDIA’s has announced its newest GPU architecture (the GeFo ...
随机推荐
- LUR和缺页次数
缺页:缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问. LRU(Least recently used)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问 ...
- Linux 系统管理命令 - iftop - 动态显示网络接口流量信息
命令详解 重要星级: ★★★★☆ 功能说明: iftop 是一款实时流量监控工具,可用于监控 TCP/IP 连接等,必须以 root 用户的身份运行.一般最小化安装系统是没有这个命令的,需要使用 yu ...
- 在gnome3.x中添加eclipse菜单
ubuntu-gnome 16.04采用gnome3,界面和gnome2有较大区别.对于自己手动解压安装,而非用包管理器安装的程序,需要手工建立应用程序的启动快捷方式.例如,对于eclipse程序,采 ...
- 三分钟掌握docker基本指令
一下内容是我用markdown编辑的,所以排版不是太ok~ # Docker ## 1.核心概念 docker主机(Host):安装了docker程序的机器.docker直接安装再操作系统上. doc ...
- Windows 程序设计 笔记
知识点 双字节字符集和Unicode字符集有何区别?采用双字节字符集有何问题 双字节字符集(DBCS)编码是0-255,DBCS含有1字节代码与2字节代码,而Unicode是统一的16位系统,这样就允 ...
- 《windows核心编程系列》十六谈谈内存映射文件
内存映射文件允许开发人员预订一块地址空间并为该区域调拨物理存储器,与虚拟内存不同的是,内存映射文件的物理存储器来自磁盘中的文件,而非系统的页交换文件.将文件映射到内存中后,我们就可以在内存中操作他们了 ...
- Qt事件系统之三:键盘事件
QKeyEvent类用来描述一个键盘事件.当键盘按键被按下或者被释放时,键盘事件便会被发送给拥有键盘输人焦点的部件. QKeyEvent的key()函数可以获取具体的按键,对于Qt中给定的所有按键,可 ...
- [Usaco2012 Nov]Concurrently Balanced Strings
Description [Brian Dean, 2012] Farmer John's cows are all of a very peculiar breed known for its dis ...
- [Usaco2008 Feb]Eating Together麻烦的聚餐
Description 为了避免餐厅过分拥挤,FJ要求奶牛们分3批就餐.每天晚饭前,奶牛们都会在餐厅前排队入内,按FJ的设想所有第3批就餐的奶牛排在队尾,队伍的前端由设定为第1批就餐的奶牛占据,中间的 ...
- [USACO 2012 Jan Silver] Delivery Route【拆点】
传送门:http://www.usaco.org/index.php?page=viewproblem2&cpid=106 这道题还真是完全没思路,真的不知道怎么做,但是看了题解后恍然大悟. ...