ZOJ 3279 Ants
来源:互联网 发布:手机音乐播放器 知乎 编辑:程序博客网 时间:2024/05/11 18:49
题意:先给定了蚂蚁每个等级的成员数量,然后求某只排名为x的蚂蚁的等级。显然蚂蚁的排名按照等级排列,同级的占有一段连续的区域。
做法:了解题意后,发现和POJ某题很像
#include<cstdio>#include<cstring>#define left l,m,x<<1#define right m+1,r,x<<1|1const int LMT=100003;int have[LMT],cov[LMT<<2];void init(void){memset(have,0,sizeof(have));}void update(int num,int pos,int l,int r,int x){if(l==r){cov[x]=num;return;}int m=(l+r)>>1;if(pos<=m)update(num,pos,left);if(pos>m)update(num,pos,right);cov[x]=cov[x<<1]+cov[x<<1|1];}int query(int pos,int l,int r,int x){if(l==r)return l;int m=(l+r)>>1;if(cov[x<<1]>=pos)return query(pos,left);else{pos-=cov[x<<1];return query(pos,right);}}int main(void){int i,n,m,a,b,x;char ord;while(~scanf("%d",&n)){init();for(i=0;i<n;i++){scanf("%d",&have[i]);update(have[i],i,0,n-1,1);}scanf("%d",&m);while(m--){ord=getchar();while(ord!='p'&&ord!='q')ord=getchar();if(ord=='p'){scanf("%d%d",&a,&b);a--;update(b,a,0,n-1,1);}else{scanf("%d",&x);printf("%d\n",query(x,0,n-1,1)+1);}}}return 0;}
- zoj 3279 Ants
- ZOJ 3279 Ants
- zoj 3279 ants
- ZOJ - 3279 Ants
- ZOJ 3279 Ants(线段树)
- zoj--Ants
- ZOJ 3279 Ants 二分树状数组
- ZOJ 3279 Ants(线段树)
- zoj 3279 Ants (线段树单点更新)
- zoj 2376 Ants
- zoj 2376 Ants
- ZOJ 2376 Ants
- ZOJ 2376 Ants
- zoj 2376 Ants
- ZOJ-2376 Ants
- zoj 3279 ants(线段树区间位置查询)
- ZOJ 3279 Ants(线段树单点更新和查询)
- zoj 3279 ants 线段树+单点更新+查询下标
- 程序员——伤不起的三十岁
- Android小技巧之无线调试
- 5.方阵旋转
- oracle之spfile与pfile
- POJ 1952
- ZOJ 3279 Ants
- 6.大数乘法
- android中Invalidate和postInvalidate的区别
- DSP与广告位之间的关系
- HTML5导入*.skp *.kmz模型的方法,类似sketchup,利用HTML5的3D性能将模型显示出来,请教一下,怎么弄啊
- 2013年3月13日----具有交互功能的对话框AlertDialog
- 程序员——伤不起的三十岁
- 使用flashfxp,PC和ARM连接失败,提示Can't set guest privileges
- 黑马程序员---java基础之面向对象(二)