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 ...
随机推荐
- asp.net MVC 使用Bootstrap 分页
Boostrap分页控件比较美观, 控制器代码:使用仓储模式实现.如果是直接使用DbContext上下文使用更简单. public ActionResult Index(int? page,strin ...
- 2-6 Opencv模块组织结构
https://opencv.org/releases.html https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.4 ...
- Swift4 构造体, 属性, 索引
创建: 2018/02/19 完成: 2018/02/25 [任务表]TODO 构造体定义 定义的概要 struct 型名 { (变量/常量的定义) (构造函数的定义) (方法的定义) (其他定义 ...
- poj 2699 The Maximum Number of Strong Kings【最大流+枚举】
因为n很小所以从大到小枚举答案.(从小到大先排个序,因为显然胜利场次越多越容易成为strong king.然后对于每个枚举出来的ans建图.点分别表示人和比赛.s向所有人连接流量为胜利场次的边,所有比 ...
- app 后台程序设计
限制客户端一分钟之内访问接口的次数 1.设备的唯一标识获取这个实际上IOS7后会存在问题,权限已经收回了,android可以2.唯一标识可以通过生成一个token区分3.每分钟的频率可以这样设置 ke ...
- 30行JavaScript代码实现一个比特币量化策略
精简极致的均线策略 30行打造一个正向收益系统 原帖地址:https://www.fmz.com/bbs-topic-new/262 没错!你听的没错是30行代码!仅仅30行小编我习惯先通篇来看看 代 ...
- EL表达式(详解)
EL表达式 1.EL基本内容 1)语法结构 ${expression} 2)[]与.运算符 EL 提供.和[]两种运算符来存取数据. 当要存取的属性名称中包含一些特殊 ...
- [BZOJ1453]Dface双面棋盘
Description Input Output Sample Input Sample Output HINT 线段树+并查集,暴力记录和更新一些信息,详情见代码注解. #include<cm ...
- magento 获得当前产品页面的产品id
$product_id = Mage::registry('current_product')->getId();
- Objective-c单例模式的正确写法--用dispatch 线程安全
单例模式在iOS开发中可能算是最常用的模式之一了,但是由于oc本身的语言特性,想要写一个正确的单例模式相对来说比较麻烦,这里我就抛砖引玉来聊一聊iOS中单例模式的设计思路.关于单例模式更多的介绍请参考 ...