[HDU 4268](长春Online 1002) set+map + 贪心
2012-09-13 01:54
525 查看
#include <iostream> #include <stdio.h> #include <map> #include <set> #include <string.h> #include <algorithm> using namespace std; map< int , int > Meng; set< int > zhu; const int N = 200000; struct Men{ int l,r; bool operator < (const Men & A) const{ if (l!=A.l) return l<A.l; return r<A.r; } void input(){ scanf("%d%d",&l,&r); } }p ,q ; int n; void solve(){ Meng.clear(); zhu.clear(); scanf("%d",&n); for (int i = 1 ; i <= n ; ++ i) p[i].input(); for (int i = 1 ; i <= n ; ++ i) q[i].input(); sort(p + 1 , p + 1 + n); sort(q + 1 , q + 1 + n); int j=1,ans = 0; for (int i = 1 ; i <= n ; ++ i){ while(q[j].l <= p[i].l && j <= n){ zhu.insert(-q[j].r); Meng[-q[j].r]++; j++; } set<int> :: iterator iter=zhu.lower_bound(-p[i].r); if (iter != zhu.end()){ ++ans; int now = *iter; --Meng[now]; if (Meng[now]==0){ zhu.erase(now); } } } printf("%d\n",ans); } int main(){ int _; cin >> _; while ( _-- ) solve(); }
lower_bound()返回一个 iterator 它指向在[first,last)标记的有序序列中可以插入value,而不会破坏容器顺序的第一个位置,而这个位置标记了一个大于等于value
的值。
按h第一关键字w第二关键字排序,每次找到最大的<=p[i].w的删除。set和map用好了
相关文章推荐
- [HDU 4268](长春Online 1002) set+map + 贪心
- hdu 4268 Alice and Bob(2012 ACM/ICPC Asia Regional Changchun Online 12年长春网络赛)
- hdu 4268 贪心+set lower_bound用法
- hdu 4268 贪心 学习了STL的 set 方法
- hdu 4268 贪心+set lower_bound用法
- HDU 1051 二维排序安排时间 (贪心||STL_set 水过)
- HDU 4268 Alice and Bob(贪心)
- Hdu 5037 Frog(2014 ACM/ICPC Asia Regional Beijing Online)[贪心 || 想法]
- Hdu 5033 Building(2014 ACM/ICPC Asia Regional Beijing Online1002) [几何]
- HDU 6180 Schedule(贪心+set)
- HDU 4268 Alice and Bob(贪心+STL)
- 2016 ACM/ICPC Asia Regional Dalian Online 1002/HDU 5869
- HDU 4268 Alice and Bob(贪心)
- HDU 4268-Alice and Bob-贪心
- HDU 4268 Alice and Bob 第37届ACM/ICPC长春赛区网络赛1002题 (贪心+multiset)
- hdu 4268 贪心
- hdu 2072 找不同的单词数(map&set)
- HDU 5876 2016 ACM/ICPC Asia Regional Dalian Online BFS+set
- HDU-2017 ACM/ICPC Asia Regional Shenyang Online-1002-cable cable cable
- hdu 4717 The Moving Points 三分法(2013 ACM/ICPC Asia Regional Online —— Warmup2 1002)