题目: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相关推荐

  1. ZOJ 3810 A Volcanic Island (2014年牡丹江赛区网络赛B题)

    ZOJ 3810 A Volcanic Island (2014年牡丹江赛区网络赛B题) 1.题目描写叙述:点击打开链接 2.解题思路:本题是四色定理的模板题.只是有几种情况要提前特判一下:n==1直 ...

  2. 2014 ACM/ICPC 北京赛区网络赛解题报告汇总

    首页 算法竞赛» 信息聚合 ONLINE JUDGE 书刊杂志 BLOG» 新闻故事» 招聘信息» 投稿须知 2014 ACM/ICPC 北京赛区网络赛解题报告汇总 九月 21st, 2014 | P ...

  3. 2011 ACM/ICPC 福州赛区网络赛解题报告

    第一次写网络赛的题解,福州赛区网络赛作为我第一年ACM最后一次网络赛酱油,画了一个很像逗号的句号.....好吧,还得为北京现场赛准备啊准备....... 这次酱油打的很犀利,貌似出第一题很快,之后节奏 ...

  4. 2018ACM-ICPC徐州赛区网络赛: A. Hard to prepare(递推)

    2018ACM-ICPC徐州赛区网络赛: A. Hard to prepare(递推) After Incident, a feast is usually held in Hakurei Shrin ...

  5. 计蒜客 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 ...

  6. 2014 ACM/ICPC 鞍山赛区网络赛(清华命题)

    为迎接10月17号清华命题的鞍山现场赛 杭电上的题目 Biconnected(hdu4997)     状态压缩DP Rotate(hdu4998)    相对任一点的旋转 Overt(hdu4999 ...

  7. hdu 4278 2012天津赛区网络赛 数学 *

    8进制转为10进制 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include ...

  8. hdu 4738 2013杭州赛区网络赛 桥+重边+连通判断 ***

    题意:有n座岛和m条桥,每条桥上有w个兵守着,现在要派不少于守桥的士兵数的人去炸桥,只能炸一条桥,使得这n座岛不连通,求最少要派多少人去. 处理重边 边在遍历的时候,第一个返回的一定是之前去的边,所以 ...

  9. HDU 4292 Food (成都赛区网络赛第五题,拆点网络流)

      题意:跟POJ3281基本上一样的拆点网络流. 建图:建一超级源点和一超级汇点,源点与食物相连,边权为其数量,汇点与饮料相连,边权也为其数量,把人分成两个点,之间的边权为1.每个人与之需要的食物和 ...

最新文章

  1. 从Gmail故障看SaaS的服务风险
  2. JavaSE学习52:细说多线程之Thread类和Runable接口
  3. P1582 倒水(二进制)
  4. [网络安全自学篇] 五十四.Windows系统安全之基于SEH异常处理机制的栈溢出攻击及防御解析
  5. Java学习优秀网站
  6. undefined reference to `vtable for XX::XX'
  7. 重磅!大数据知识总结和调参技巧开放下载了
  8. extern作用详解
  9. Citrix XenApp 6.5客户端自动下载(无需从官网下载)
  10. 考上研究生就脱单?快来看看这些女生多的大学!
  11. winhex 15.6 和 HexWorkshop 6.01注册机
  12. 模拟电子技术动画-PN结(动画是转的)内容再修改
  13. java实现office转pdf文件
  14. Linux中uuid是什么?UUID由几部分组成?
  15. Unity Shader LOD详解
  16. C++ 代码模拟登录淘宝、天猫、支付宝等电商网站的实现
  17. 怎么修改ftp服务器被动端口,如何设置vsftp的被动模式端口
  18. USB转TTL、USB转串口、USB转232的区别(转)
  19. Tensorflow学习笔记(六)均方误差损失函数,MSE
  20. v-loalder是什么?

热门文章

  1. python数据可视化-matplotlib之散点图sactter函数详解
  2. ASP.NET XML高级编程(一、XML技术简介)
  3. php判断搜索引擎来路,php实现判断访问来路是否为搜索引擎机器人的方法
  4. 写篇技术博客被简书锁定是一种什么样的体验
  5. ArcGIS API for JavaScript心得体验
  6. iOS程序员必须知道的Android要点
  7. Silverlight 中的通信安全访问策略
  8. 典型的异步服务器端套接字构建
  9. 关于用C#编写ActiveX控件4(转)
  10. cocos2d-x移植android,Cocos2d-x Xcode 移植到 Android stutio