CDOJ 数据结构训练F 树状数组
来源:互联网 发布:钢铁侠反应堆淘宝 编辑:程序博客网 时间:2024/06/07 19:56
#include <map>#include <set>#include <list>#include <cmath>#include<cctype>#include <ctime>#include <deque>#include <stack>#include <queue>#include <cstdio>#include <string>#include <vector>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>#define LL long long#define PI 3.1415926535897932626#define MAXN 100005using namespace std;int gcd(int a, int b){return a % b == 0 ? b : gcd(b, a % b);}int input[MAXN];LL N;LL C[MAXN];LL ans[MAXN];struct node{ LL x,y; friend bool operator <(const node &a,const node &b) { if (a.y==b.y) { return a.x<b.x; } else return a.y<b.y; }}tree[MAXN];void update(LL pos,LL val){while (pos<=MAXN) //MAXN为总长度{C[pos]+=val;pos+=pos&-pos;}}int read(int pos){int ans=0;while (pos>0){ans+=C[pos];pos-=pos&-pos;}return ans;}void show(){ for (int i=0;i<N;i++) printf("%lld %lld\n",tree[i].x,tree[i].y);}void init(){ memset(C,0,sizeof(C)); memset(ans,0,sizeof(ans)); for (LL i=0;i<N;i++) { scanf("%lld%lld",&tree[i].x,&tree[i].y); tree[i].x++;tree[i].y++; } sort(tree,tree+N); //show();}void slove(){ init(); for (LL i=0;i<N;i++) { ans[read(tree[i].x)]++; update(tree[i].x,1); } for (int i=0;i<N;i++) { printf("%lld\n",ans[i]); }}int main(){ while (scanf("%lld",&N)==1) { slove(); } return 0;}
0 0
- CDOJ 数据结构训练F 树状数组
- CDOJ 数据结构训练H 树状数组离散化
- CDOJ 数据结构训练K
- CDOJ 数据结构训练 J
- CDOJ 数据结构训练 E
- CSU-ACM2017暑期训练16-树状数组 F
- 【poj 3067 cdoj 383】Japan 树状数组
- 暑假-树状数组-F - Brainman
- CDOJ 1217 The Battle of Chibi【树状数组+dp】
- 【CDOJ 1342】郭大侠与甲铁城 【离线树状数组】
- 数据结构之树状数组
- 数据结构之树状数组
- [数据结构]树状数组专辑
- 数据结构之树状数组
- 数据结构之树状数组
- 【数据结构】树状数组
- 数据结构 树状数组
- 树状数组学习 ----- 数据结构
- SlidingMenu getSupportActionBar()方法不能用
- CDOJ 数据结构训练 J
- virtualbox 中的linux 共享文件 发生文件系统类型错误的解决办法
- CDOJ 数据结构训练H 树状数组离散化
- [C++基础]原码/反码/补码、二进制位运算
- CDOJ 数据结构训练F 树状数组
- apk反编译修改
- CDOJ 数据结构训练 E
- UC编程9-管道pipe操作和共享内存段shm操作
- 在vim配置文件中添加对Python的支持
- [连载]JavaScript讲义(04)--- 函数和闭包
- 《剑指offer》面试题5从头到尾打印链表
- 如何读取一个数据库的字段,并生成一个数列
- 【Android】打电话与发短信的实现