POJ 2481 Cows
来源:互联网 发布:java实现九九乘法表 编辑:程序博客网 时间:2024/05/16 17:57
解题思路:
实质是排序后求逆序对
#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#include <cmath>#include <vector>#include <queue>#include <stack>#include <set>#include <map>#include <algorithm>#define ll long longusing namespace std;const int MAXN = 100000 + 10;struct Node{ int l, r; int id; bool operator < (const Node& rhs)const { if(l != rhs.l) return l < rhs.l; else return r > rhs.r; }}cow[MAXN];struct Tree{ int l, r; int sum;}tree[MAXN<<2];int ans[MAXN];void build(int l, int r, int rt){ tree[rt].l = l; tree[rt].r = r; tree[rt].sum = 0; if(l == r) return ; int m = (l + r) >> 1; build(l, m, rt<<1); build(m + 1, r, rt<<1|1);}void update(int p, int rt){ tree[rt].sum ++; if(tree[rt].l == tree[rt].r) return ; else { int m = (tree[rt].l + tree[rt].r) >> 1; if(p <= m) update(p, rt<<1); else update(p, rt<<1|1); }}int Query(int l, int r, int rt){ if(tree[rt].l >= l && tree[rt].r <= r) return tree[rt].sum; else { int m = (tree[rt].l + tree[rt].r) >> 1; int sum = 0; if(l <= m) sum += Query(l, r, rt<<1); if(r > m) sum += Query(l, r, rt<<1|1); return sum; }}int main(){ int n; while(scanf("%d", &n)!=EOF) { if(n == 0) break; for(int i=0;i<n;i++) { scanf("%d%d", &cow[i].l, &cow[i].r); cow[i].id = i; } sort(cow, cow + n); build(0, MAXN, 1); for(int i=0;i<n;i++) { if(i != 0 && cow[i].l == cow[i-1].l && cow[i].r == cow[i-1].r) ans[cow[i].id] = ans[cow[i-1].id]; else ans[cow[i].id] = Query(cow[i].r, MAXN, 1); update(cow[i].r, 1); } for(int i=0;i<n-1;i++) printf("%d ", ans[i]); printf("%d\n", ans[n-1]); } return 0;}
0 0
- poj 2481 Cows
- poj 2481 Cows
- POJ 2481 cows
- Poj 2481 Cows
- poj 2481 cows
- POJ 2481 Cows
- poj 2481 Cows
- POJ 2481 Cows
- POJ 2481 Cows
- POJ 2481 Cows
- POJ 2481 Cows
- POJ:2481 Cows
- poj 2481 Cows
- POJ 2481 Cows
- POJ 2481 Cows
- poj 2481 Cows
- POJ 2481 Cows
- poj 2481 Cows
- infinispan配置
- 八大排序算法之二希尔排序(C语言)
- 提升ListView的运行效率
- Oracle db 11.2.0.4 linux 6.3下编译bbed
- Android 浏览器打开本地app
- POJ 2481 Cows
- IOS调试—断点调试以及动态输出
- 【Thinking In Java笔记】多态
- javaWEB项目定时调用
- android之官方下拉刷新组件SwipeRefreshLayout
- VS2013常用快捷键
- XUtil学习之DBUtil(八)
- POJ 1088 滑雪 动态规划
- Linux网络接口配置文件ifcfg-eth0解析