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的更多相关文章

随机推荐

  1. 深入浅出MongoDB(二)概述

    上次的博文深入浅出MongoDB(一)NoSQL中我们已经简单介绍了一下NoSQL的基本概念,这次我们来了解一下MongoDB的相关概念. 1.简介 MongoDB是一款由C++编写的高性能.开源.无 ...

  2. ASP.NET MVC4学习笔记之Controller激活的扩展

    一. 为什么要进行扩展 在前面的分析中,我们知道默认的Controller激活系统只能实例化无参构造函数的Controller类型,但在某些情况一下,我们希望某些服务的实例能够自动注入到Control ...

  3. hadoop2—namenode—HA原理详解

    在hadoop1中NameNode存在一个单点故障问题,也就是说如果NameNode所在的机器发生故障,那么整个集群就将不可用(hadoop1中有个SecorndaryNameNode,但是它并不是N ...

  4. ORACLE DG之参数详解

    1.DB_NAME 数据库名字,需要保持同一个Data Guard中所有数据库DB_NAME相同. 主库和备库相同 DB_NAME='chicago' DB_NAME='chicago' 2.DB_U ...

  5. 自适应游标共享技术01(Adaptive Cursor Sharing)

    什么是ACS(adaptiver cursor sharing) Oracle通过绑定变量技术解决了SQL语句硬解析过多的问题,降低了资源的争用.但是绑定变量在引入cursor sharing,增加了 ...

  6. 微信分享朋友链接显示js代码

    通常自己做的一个页面想通过微信像朋友分享时,展示的标题和描述都是不是自己想要的,自己查了一些资料,原来是通过js来进行控制 展示效果如下: 标题.描述.还有分享的图片都是有js来控制的. js代码如下 ...

  7. EXCEL处理数据小技巧

    1.EXCEL 中如何获得4*8这个数字中,*号前面的数字 输入  =LEFT(AC2,FIND("*",AC2)-1) 获得*右边的数字 输入 =RIGHT(AC2,FIND(& ...

  8. Linux如何开机自动运行自己的脚本

    博客分类: LINUX 脚本LinuxCentOSWindowsBash      记录这个事情是上次完成之后,今天要新加一个文件夹,一时之间忘记以前怎么做了,因为有几种方法,起码我知道三种方法,这里 ...

  9. web relase

    http://wenku.baidu.com/link?url=uOAV9QwXGGLjeqt6M1KTqwp0Jbhhguvz9IxExCHNiUlrYMX584Io3ByNJJIkAVzEqzv9 ...

  10. 十一、从头到尾彻底解析Hash 表算法

    在研究MonetDB时深入的学习了hash算法,看了作者的文章很有感触,所以转发,希望能够使更多人受益! 十一.从头到尾彻底解析Hash 表算法 作者:July.wuliming.pkuoliver  ...