poj-2481 Cows(线段树,思路)
来源:互联网 发布:python注释快捷键 编辑:程序博客网 时间:2024/05/16 09:21
题目来源:http://poj.org/problem?id=2481
题意
在一个农场里,有n头牛,每头牛呢,喜欢吃一定范围的草,把范围看成一条直线,那么给出n头牛各自的区间。
然后,农场主给出了一个定义,强牛与弱牛(想对来说),Given two cows: cowi and cowj, their favourite clover range is [Si, Ei] and [Sj, Ej]. If Si <= Sj and Ej <= Ei and Ei - Si > Ej - Sj, we say that cowi is stronger than cowj. ,瞅瞅,就是这个,问每一头牛,有多少头牛比它强。
思路
这道题思前想后,太菜了。,。还是不会,,,翻了个博主,说是让转换思维,然后我就转了转,如果把一个区间看成一个点,是不是就成了求逆序数类的问题。,,,,
额,按照右边界进行从大到小排序,如果右边界相同,那么左边界按照从小到大进行排序,为了保证比当前强的牛都在他之前。。。
然后就是求逆序数模板了,,,
代码
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1e5+10;struct pp{ int l,r; int index;} s[maxn];int num[maxn];int tree[maxn*3];void updata(int x,int L,int R,int rt){ if(L==R) { tree[rt]++; return; } int m=(L+R)/2; if(x<=m) updata(x,L,m,rt<<1); else updata(x,m+1,R,rt<<1|1); tree[rt]=tree[rt<<1]+tree[rt<<1|1];}int query(int l,int r,int L,int R,int rt){ if(l<=L&&R<=r) { return tree[rt]; } int m=(L+R)/2,ret=0; if(l<=m) ret+=query(l,r,L,m,rt<<1); if(r>m) ret+=query(l,r,m+1,R,rt<<1|1); return ret;}bool cmp(pp x,pp y){ if(x.r==y.r) return x.l<y.l; return x.r>y.r;}int main(){ int n; while(~scanf("%d",&n)&&n) { memset(tree,0,sizeof(tree)); memset(num,0,sizeof(num)); for(int i=1;i<=n;i++) { scanf("%d%d",&s[i].l,&s[i].r); s[i].l++; s[i].r++; s[i].index=i; } sort(s+1,s+n+1,cmp); num[s[1].index]=0; updata(s[1].l,1,n,1);// for(int i=1;i<=9;i++)// printf("%d ",tree[i]);// printf("\n"); for(int i=2;i<=n;i++) { if(s[i].l==s[i-1].l&&s[i].r==s[i-1].r) num[s[i].index]=num[s[i-1].index]; else num[s[i].index]=query(1,s[i].l,1,n,1); updata(s[i].l,1,n,1); } printf("%d",num[1]); for(int i=2;i<=n;i++) printf(" %d",num[i]); printf("\n"); }}
阅读全文
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【线段树单点更新】
- Delphi 快捷键
- PHP代码审计片段讲解(入门代码审计、CTF必备)
- Elasticsearch 5.x 生产环境和节点配置
- WebView由浅入深使用
- OpenGL学习笔记之绘制三角形
- poj-2481 Cows(线段树,思路)
- php实现收藏功能
- vmware12如何安装deepin国产linux系统
- 【转】Quartz初识
- 数据库的左连接和右连接
- junhyukoh的lstm代码解析
- 请设计时间和空间上都尽可能高效的算法,求链式存储的线性表的倒数第m个元素
- 利用Thinkphp 5缓存漏洞实现前台Getshell
- 加密图解