HDU 4268 Alice and Bob(贪心+STL)
来源:互联网 发布:阿里云客服扣分标准 编辑:程序博客网 时间:2024/06/05 15:24
思路:
分析:对Alice 和Bob的牌都按 h 排序,然后对Alice的每张牌,在Bob的牌中找一个最大能覆盖的 。也就是说首先满足Alice的牌 h >= Bob的牌 h,然后找最大 w。在查找最大的w时,可以使用multiset中的lower_bound。multiset动态插入每次只插入满足Alice的牌 h >= Bob的牌 h 的牌。
#include<iostream>#include<algorithm>#include<cstdio>#include<set>#define MAXN 100001using namespace std;multiset<int>ms;struct SS{int w,h;}A[MAXN],B[MAXN];bool cmp(SS p,SS q){ if(p.w<q.w) return true; return false;}int main(){ int test,n,i,j,ans; scanf("%d",&test); while(test--) { scanf("%d",&n); for(i=0;i<n;i++) scanf("%d%d",&A[i].w,&A[i].h); for(i=0;i<n;i++) scanf("%d%d",&B[i].w,&B[i].h); sort(A,A+n,cmp); sort(B,B+n,cmp); ms.clear(); ans=0; multiset<int>::iterator it; for(i=0,j=0;i<n;i++) { for(;j<n&&A[i].w>=B[j].w;j++) { ms.insert(B[j].h); } if(ms.empty())continue; it=ms.lower_bound(A[i].h); if(it==ms.end()||A[i].h<*it) it--; if(*it<=A[i].h) { ans++; ms.erase(it); } } printf("%d\n",ans); } return 0;}
0 0
- HDU 4268 Alice and Bob(贪心+STL)
- 贪心,STL,multiset(Alice and Bob,HDU 4268)
- HDU 4268 Alice and Bob(贪心+STL)
- HDU 4268 Alice and Bob(贪心)
- HDU 4268 Alice and Bob(贪心)
- HDU 4268 Alice and Bob (贪心)
- HDU 4268 Alice and Bob(贪心)
- hdu 4268 Alice and Bob(贪心)
- HDU 4268 Alice and Bob——STl upper_bound + 贪心
- hdu 4268 Alice and Bob (set+贪心)
- HDU 4268 Alice and Bob(贪心+数据结构)
- hdu 4268 Alice and Bob(贪心)
- HDU 4268 Alice and Bob (set+贪心)
- HDU 4268 Alice and Bob(贪心+multiset)
- Alice and Bob(贪心HDU 4268)
- HDU 4268-Alice and Bob-贪心
- HDU 4268-Alice and Bob( STL: set)
- hdu 4268 Alice and Bob矩形覆盖(贪心)
- TrustStrategy——Java中httpclient.jar和httpcore.jar版本差异带来的异常
- oracle存储过程超级详解
- 解决bootstrap中模态框显示后页面抖动的问题
- jaee学习进阶一
- Win32环境下的ini文件读取
- HDU 4268 Alice and Bob(贪心+STL)
- HDU 5573.Binary Tree【二进制 构造】【8月10】
- AJAX的工作原理和封装
- hdu 4975 A simple Gaussian elimination problem【最大流Dinic+思维+判环】好题!
- 异步处理大师 Handler
- 虚拟机能ping通主机,主机ping不通虚拟机
- 求二叉查找树指定节点后继
- 2015华为机试练习之计算二进制数的0的个数
- JNI/NDK开发指南(九)---JNI异常处理