Wannafly模拟赛4 A 题 Laptop 【二维偏序问题 + 树状数组维护】
来源:互联网 发布:百胜软件股份有限公司 编辑:程序博客网 时间:2024/06/05 19:05
传送门
//这个是经典的二维偏序问题, 偏序问题也是比较难的一部分, 当上了三维以后, 就要不断用cdq分治以及一些高级数据结构来解决. 但是这道题还是比较简单的, 只是一个普通的二维偏序, 所以直接对第一维进行排序, 然后用树状数组维护第二维, 然后对于每一个插入, 我们寻找它的后缀和, (前缀和不好实现) 然后不断更新答案即可. (因为数很大, 所以需要进行离散化)
AC Code
const int maxn = 1e5+5;int n;int c[maxn];void add(int x) { for(;x<=n;x+=x&(-x)) c[x]++; }int getsum(int x) { int res=0; for(;x;x-=x&(-x)) res+=c[x]; return res; }pair<int,int>pii[maxn];vector<int>ve;void solve(){ while(~scanf("%d",&n)){ ve.clear(); for(int i=1;i<=n;i++){ scanf("%d%d",&pii[i].fi,&pii[i].se); ve.push_back(pii[i].se); } sort(ve.begin(),ve.end()); sort(pii+1,pii+1+n); int res = 0; for(int i=n;i>=1;i--){ int pos = lower_bound(ve.begin(),ve.end(),pii[i].se) - ve.begin() + 1; if(getsum(n) - getsum(pos)) res++; add(pos); } cout << res << endl; }}
阅读全文
0 0
- Wannafly模拟赛4 A 题 Laptop 【二维偏序问题 + 树状数组维护】
- Wannafly模拟赛4 A Laptop (前缀数组)
- Wannafly模拟赛4 A Laptop (RMQ)
- Wannafly模拟赛4:A-Laptop(后缀)
- Wannafly模拟赛4 C Sum(树状数组)
- wannafly 4 laptop
- Wannafly模拟赛4-C-sum(二进制拆分+树状数组)
- Wannafly模拟赛2 A题
- Wannafly模拟赛5 A题
- Wannafly模拟赛4
- Wannafly模拟赛 矩阵 二维矩阵hash
- Wannafly模拟赛4 B题
- jzoj5290 【NOIP2017提高组A组模拟8.17】行程的交集 (树上路径交,dfs序+树状数组维护姿势)
- Wannafly模拟赛5 A split 二分
- Wannafly模拟赛5 A Split
- Wannafly模拟赛5 A Split 【贪心】
- Wannafly模拟赛4 题解
- 【大二最后一题】Wannafly模拟赛 矩阵【二分+二维字符串Hash】
- JDK8下载|JDK1.8下载可选择window版和linux版
- Linux教程【11】-网络命令
- MVC,MVP 和 MVVM 的图示
- 计算机是如何启动的?
- IntelliJ IDEA 快捷键联想
- Wannafly模拟赛4 A 题 Laptop 【二维偏序问题 + 树状数组维护】
- POJ 2456 Aggressive cows 二分
- Python多线程(threading模块)
- java鬼混笔记:springboot 7、springboot整合mybatis后再加上druid数据库连接池
- 计算时间差函数集合
- [自动驾驶]CarND-Vehicle-Detection
- pygame游戏之旅9:添加介绍
- 567. Permutation in String
- Python的psutil模块监控内存代码