2014_acmicpc_shanghai_google
I http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84975#problem/I
题意:我方有n个士兵,敌方有m个士兵,每个士兵有攻击力和防御力,我方一个兵只能选择对方一个兵去战斗,即使我方幸存了也不能再去和别的敌人战斗,一场战斗中防御力小于等于对方攻击力的兵会死,我们需要选出一个方案使得杀死对面所有兵,且我们存活的兵尽量多。
解法:先把我军按照攻击力从大到小排序,敌军按照防御力从大到小排序,然后依次枚举敌军士兵,对每个敌军士兵,我们把攻击力大于等于其防御力的都存到map中,存我军的防御力。map中的都一定能杀死对手。所以我们在map中二分出第一个防御力大于敌军攻击力的,那么选择他可以使得幸存的人数多一个,并且防御力最节省。贪心。
//#define txtout
//#define debug
#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;
const int M=1e5+;
map<int,int> mp;
map<int,int>::iterator it;
struct G{
int attack,defense;
}our[M],his[M];
int n,m;
bool cmp_defense_de(const G &a,const G &b){
return a.defense>b.defense;
}
bool cmp_attack_de(const G &a,const G &b){
return a.attack>b.attack;
}
int solve(){
sort(our,our+n,cmp_attack_de);
sort(his,his+m,cmp_defense_de);
mp.clear();
int our_id=;
int result=;
for(int i=;i<m;i++){
while(our_id<n&&our[our_id].attack>=his[i].defense){
mp[our[our_id].defense]++;
our_id++;
}
if(mp.empty()) return -;
it=mp.upper_bound(his[i].attack);
if(it==mp.end()){
it=mp.begin();
}
else{
result++;
}
if(it->second==){
mp.erase(it);
}
else{
mp[it->first]--;
}
}
result+=n-our_id;
for(it=mp.begin();it!=mp.end();it++){
result+=it->second;
}
return result;
}
int main(){
#ifdef txtout
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif // txtout
int t;
while(~scanf("%d",&t)){
int cas=;
while(t--){
scanf("%d%d",&n,&m);
for(int i=;i<n;i++){
scanf("%d%d",&our[i].attack,&our[i].defense);
}
for(int i=;i<m;i++){
scanf("%d%d",&his[i].attack,&his[i].defense);
}
printf("Case #%d: %d\n",cas++,solve());
}
}
return ;
}
end
2014_acmicpc_shanghai_google的更多相关文章
随机推荐
- 基于zmap 的应用层扫描器 zgrab (一)
基于zmap 的应用层扫描器 zgrab (一) 介绍 zgrab 是基于zmap无状态扫描的应用层扫描器,可以自定义数据包,以及ip,domain之间的关联.可用于快速指纹识别爆破等场景. 安装 g ...
- apache2反向代理node.js应用
在之前记录的随笔中,只是介绍了怎么在apache2中使用proxy模块,后来查到了一些资料,可以通过下面网址查看配置块的详细参数信息 http://man.ddvip.com/soft/apache2 ...
- Kafka入门学习随记(二)
====Kafka消费者模型 参考博客:http://www.tuicool.com/articles/fI7J3m --分区消费模型 分区消费架构图 图中kafka集群有两台服务器(Server), ...
- python 面向对象、特殊方法与多范式、对象的属性及与其他语言的差异
1.python 面向对象 文章内容摘自:http://www.cnblogs.com/vamei/archive/2012/06/02/2532018.html 1.__init__() 创建对 ...
- ios 将Log日志重定向输出到文件中保存
对于真机,日志没法保存,不好分析问题.所以有必要将日志保存到应用的Docunment目录下,并设置成共享文件,这样才能取出分析. 首先是日志输出,分为c的printf和标准的NSLog输出,print ...
- 使用 Swift 制作一个新闻通知中心插件(2)
我们在第一部分的文章中详细讲解了创建一个通知中心插件的整体过程.我们成功的在通知中心里面显示了新闻列表.但是截止到目前,我们还不能从通知中心的列表中查看新闻的详细内容.在这次的教程中,我们就以上次的教 ...
- 微价值:专访《甜心爱消除》的个人开发者Lee,日入千元
[导语] 我们希望能够对一些个人开发者进行专访,这样大家更能显得接地气,看看人家做什么,怎么坚持.<甜心爱消除>作者Lee是三群的兄弟,也关注微价值.微价 值的文章还是可以的,得到一些业内 ...
- 28.USB的传输类型
USB上必须将数据组织成 事务 才能够进行传输.事务常有两个或三个包.令牌包用于启动一个事务,由主机发送:数据包传送数据,方向由令牌包确定:握手包常是数据接收方发送的,用于表示接收数据的状态.USB协 ...
- Sublime Text 3安装Latex
Sublime Text 3安装Latex 安装环境 Sublime Text 3已安装Package Control 安装过程 进入官网下载安装MikTex,www.miktex.org 进入官网下 ...
- OC中数组类NSArray的详解,数组的遍历(二)
数组类的便利 1.for循环(大家都会的...) 2.NSEmunerator 3.for in 首先重点说下 第二种NSEmunerator枚举器,系统声明是 @interface NSEnumer ...