HDU4268 2012ACM长春赛区网络赛 Alice and Bob
题目:HDU4268(贪心)
题意是Alice和Bob都有N张卡片,卡片各有尺寸,Alice拿自己的卡片分别去盖Bob的,给出每张卡片的尺寸,问最多可以盖住多少张。
先说一下我错误的解题方法,主要思想就是拿最大的去盖最大的。分别对Alice和Bob的卡片在两个set中进行排序(排序是自动的),
按卡片的h降序排,h相同时按w的降序排。然后以Bob的set做循环,取Alice的set首端的卡片去盖,能盖住则删去,代码如下:
#include <iostream> //#include <fstream> #include <set> #define FOR(a,b) for(int i = (a);i < (b);i ++) using namespace std;class Card { public:int h,w;bool operator<(const Card& c) const //插入set时自动排序,要自定义"<"操作符 {if( h == c.h) return w < c.w;return h < c.h;}bool CanCover(const Card& c) const{return (h >= c.h && w >= c.w);} };int main() {//ifstream cin("in.txt");multiset<Card> Alice,Bob;multiset<Card>::iterator ap,bp;Card c;int t,n,ans;cin>>t;while (t --){Alice.clear();Bob.clear();ans = 0;cin>>n;FOR(0,n){cin>>c.h>>c.w;Alice.insert(c);}FOR(0,n){cin>>c.h>>c.w;Bob.insert(c);}ap = Alice.begin();while (ap != Alice.end()){bp = Bob.begin();if(ap->CanCover(*bp)){Bob.erase(bp);ans ++;}ap ++;}cout<<ans<<endl;} }
我拿着这个代码提交了好几次都不对,然后就去参考了牛人的博客,看了半天才发现自己陷入了思维定势,正确思维应该是,对于Bob的每张卡片,把Alice的满足高度大于这张卡片的所有卡片组成一个集合(set),从集合中找w最接近的卡片,找到则从集合中删去。
正确的代码如下:
#include <iostream> //#include <fstream> #include <set> #include <algorithm> #define FOR(a,b) for(int i = (a); i < (b); i ++) using namespace std; const int maxnum = 100005;struct Card {int h,w;bool operator<(Card& c){return (h < c.h);} };Card Alice[maxnum],Bob[maxnum];int main() {//ifstream cin("in.txt");multiset<int> mi;multiset<int>::iterator mit;int t,n,ans;cin>>t;while (t --){cin>>n;memset(Alice,0,sizeof(Card)*n);memset(Bob,0,sizeof(Card)*n);mi.clear();ans = 0;FOR(0,n){cin>>Alice[i].h>>Alice[i].w;}FOR(0,n){cin>>Bob[i].h>>Bob[i].w;}sort(Alice,Alice+n);sort(Bob,Bob+n);int p = 0;FOR(0,n){ while (p < n && Bob[p].h <= Alice[i].h){mi.insert(Bob[p].w);p ++;}if(mi.size()){mit = mi.lower_bound(Alice[i].w);if(mit == mi.end()) mit --;if(mit != mi.begin() && Alice[i].w < *mit) mit --;if(Alice[i].w >= *mit){mi.erase(mit);ans ++;}}}cout<<ans<<endl;} }
转载于:https://www.cnblogs.com/ifinver/archive/2012/09/28/2706474.html
HDU4268 2012ACM长春赛区网络赛 Alice and Bob相关推荐
- ZOJ 3810 A Volcanic Island (2014年牡丹江赛区网络赛B题)
ZOJ 3810 A Volcanic Island (2014年牡丹江赛区网络赛B题) 1.题目描写叙述:点击打开链接 2.解题思路:本题是四色定理的模板题.只是有几种情况要提前特判一下:n==1直 ...
- 2014 ACM/ICPC 北京赛区网络赛解题报告汇总
首页 算法竞赛» 信息聚合 ONLINE JUDGE 书刊杂志 BLOG» 新闻故事» 招聘信息» 投稿须知 2014 ACM/ICPC 北京赛区网络赛解题报告汇总 九月 21st, 2014 | P ...
- 2011 ACM/ICPC 福州赛区网络赛解题报告
第一次写网络赛的题解,福州赛区网络赛作为我第一年ACM最后一次网络赛酱油,画了一个很像逗号的句号.....好吧,还得为北京现场赛准备啊准备....... 这次酱油打的很犀利,貌似出第一题很快,之后节奏 ...
- 2018ACM-ICPC徐州赛区网络赛: A. Hard to prepare(递推)
2018ACM-ICPC徐州赛区网络赛: A. Hard to prepare(递推) After Incident, a feast is usually held in Hakurei Shrin ...
- 计蒜客 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B coin(求乘法逆元)
Bob has a not even coin, every time he tosses the coin, the probability that the coin's front face u ...
- 2014 ACM/ICPC 鞍山赛区网络赛(清华命题)
为迎接10月17号清华命题的鞍山现场赛 杭电上的题目 Biconnected(hdu4997) 状态压缩DP Rotate(hdu4998) 相对任一点的旋转 Overt(hdu4999 ...
- hdu 4278 2012天津赛区网络赛 数学 *
8进制转为10进制 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include ...
- hdu 4738 2013杭州赛区网络赛 桥+重边+连通判断 ***
题意:有n座岛和m条桥,每条桥上有w个兵守着,现在要派不少于守桥的士兵数的人去炸桥,只能炸一条桥,使得这n座岛不连通,求最少要派多少人去. 处理重边 边在遍历的时候,第一个返回的一定是之前去的边,所以 ...
- HDU 4292 Food (成都赛区网络赛第五题,拆点网络流)
题意:跟POJ3281基本上一样的拆点网络流. 建图:建一超级源点和一超级汇点,源点与食物相连,边权为其数量,汇点与饮料相连,边权也为其数量,把人分成两个点,之间的边权为1.每个人与之需要的食物和 ...
最新文章
- 从Gmail故障看SaaS的服务风险
- JavaSE学习52:细说多线程之Thread类和Runable接口
- P1582 倒水(二进制)
- [网络安全自学篇] 五十四.Windows系统安全之基于SEH异常处理机制的栈溢出攻击及防御解析
- Java学习优秀网站
- undefined reference to `vtable for XX::XX'
- 重磅!大数据知识总结和调参技巧开放下载了
- extern作用详解
- Citrix XenApp 6.5客户端自动下载(无需从官网下载)
- 考上研究生就脱单?快来看看这些女生多的大学!
- winhex 15.6 和 HexWorkshop 6.01注册机
- 模拟电子技术动画-PN结(动画是转的)内容再修改
- java实现office转pdf文件
- Linux中uuid是什么?UUID由几部分组成?
- Unity Shader LOD详解
- C++ 代码模拟登录淘宝、天猫、支付宝等电商网站的实现
- 怎么修改ftp服务器被动端口,如何设置vsftp的被动模式端口
- USB转TTL、USB转串口、USB转232的区别(转)
- Tensorflow学习笔记(六)均方误差损失函数,MSE
- v-loalder是什么?
热门文章
- python数据可视化-matplotlib之散点图sactter函数详解
- ASP.NET XML高级编程(一、XML技术简介)
- php判断搜索引擎来路,php实现判断访问来路是否为搜索引擎机器人的方法
- 写篇技术博客被简书锁定是一种什么样的体验
- ArcGIS API for JavaScript心得体验
- iOS程序员必须知道的Android要点
- Silverlight 中的通信安全访问策略
- 典型的异步服务器端套接字构建
- 关于用C#编写ActiveX控件4(转)
- cocos2d-x移植android,Cocos2d-x Xcode 移植到 Android stutio