POJ 2481 Cows
来源:互联网 发布:微信矩阵怎么弄 编辑:程序博客网 时间:2024/05/19 02:06
树状数组,我代码写得很清晰啊,(●ˇ∀ˇ●)
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAX = 1e5 + 5;struct NODE{ int s, e, id; bool operator==(NODE& tmp) { return this -> s == tmp.s && this -> e == tmp.e; }}node[MAX];int cnt[MAX];int n;int arr[MAX];int comp(NODE a, NODE b){ return a.e == b.e ? a.s < b.s : a.e > b.e;}int lowbit(int x){ return x & (-x);}void update(int k, int num){ while (k <= n) { cnt[k] += num; k += lowbit(k); }}int sum(int k){ int res = 0; while (k) { res += cnt[k]; k -= lowbit(k); } return res;}int main(){ while (scanf("%d", &n)) { if (!n) break; memset(arr, 0, sizeof(arr)); memset(cnt, 0, sizeof(arr)); for (int i = 1; i <= n; ++i) { scanf("%d%d", &node[i].s, &node[i].e); node[i].id = i; } sort(node + 1, node + 1 + n, comp); for (int i = 1; i <= n; ++i) { if (node[i] == node[i - 1]) arr[node[i].id] = arr[node[i - 1].id]; else arr[node[i].id] = sum(node[i].s + 1); //因为s可以等于0,所以才加1的。 update(node[i].s + 1, 1); } for (int i = 1; i <= n; ++i) { printf(i == n? "%d\n" : "%d ", arr[i]); } } 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
- 2523: 建房工程
- java语言程序设计第十版(Introduce to java) 课后习题 chapter6-26
- ListView中item的最外层使用margin属性失效
- 贝叶斯推理
- 4款好用的开源HTML编辑器
- POJ 2481 Cows
- flask 好文收集
- 三方库说明
- Java异常处理和设计
- jquery操作table备忘
- win7(64位)下使用ltp(一):API调用
- 排序与查找之线性查找篇(C语言实现)
- 多线程 网络
- Win8中那个你不知道的小设置