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 ...
随机推荐
- mybatis基础学习5---懒加载和缓存
1:懒加载 1)在主配置文件设置(要放在配置文件最前面) 1 <!-- 延迟加载配置,两个都必须同时有 --> <settings> 3 <!-- lazyLoading ...
- Docker的基础知识与安装(Ubantu CentOS)
Docker是一种允许特殊类型虚拟化的实用程序.Docker允许使用Docker镜像在系统上“虚拟”运行程序.可以下载或创建可以运行的图像.一旦加载并执行了图像,它现在就是一个容器.容器已为容器内的程 ...
- MySQL调优之数据类型选择原则
本文涉及:高可用数据库设计时数据类型的选择原则 在进行数据库设计时,如果能够选择最恰当的数据类型就可以为后期的数据库调优打好最坚实的基础 选择数据类型的原则 更小的通常更好 例如存储订单状态字段很多时 ...
- DBMS "无法作为数据库主体执行,因为主体“dbo”不存在、无法模拟这种..........”
解决方案: 新附加的数据库需要设置所有者才能建立数据库关系图.供参考的操作步骤如下: 选择“AdventureWorks2012LT”,右键,选择“属性”,选择“文件”页,点击“所有者”右侧按钮,点击 ...
- [POI2011]Temperature
Description The Byteotian Institute of Meteorology (BIM) measures the air temperature daily. The mea ...
- STL之map基础知识
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...
- 解题报告:hdu 1556 Color the ball(区间修改,单点查询)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556 Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N ...
- ActionEvent之TextField
这里我们讲这个TestField类 也就是我们的输入框,什么输入密码,用户名什么的. 一些方法: 这里说到TestField也会有事件发生,就是当你在文本框敲回车的时候. 看个例子: import j ...
- visual studio 2015 key vs2015密钥
Visual Studio Professional 2015简体中文版(专业版)KEY:HMGNV-WCYXV-X7G9W-YCX63-B98R2Visual Studio Enterprise 2 ...
- HTML中的那些bug
1.语法检测时提示有多余的结束标签 <!doctype html> <html> <head> <meta charset="utf-8" ...