hdu 4288 分组线段树
来源:互联网 发布:网络种地 编辑:程序博客网 时间:2024/06/05 07:34
分组的形式还是余数 但是这次代表的是每个区间里排序的%5后的值
那么这一段的值一定是左边节点排序后余5得出的序号的值 然后加上右边的节点排序后的序号和左边的个数相加后
余5的值
比如左边的节点有7个数,右边的第6个数是这一段中的第几个数呢?
就是((7%5)+6)%5=3
所以就要把这第六个数的值加到第3棵树上的对应区间节点去 想通了以后就比较简单了
#include<iostream>#include<stdio.h>#include<cstdio>#include<string.h>#include<algorithm>using namespace std;#define ls (rt<<1)#define rs (rt<<1|1)#define mid ((l+r)>>1)#define ll __int64#define maxn 111111ll sum[maxn<<2][5];int num[maxn<<2];void build(int rt,int l,int r){ for(int i=0;i<5;++i)sum[rt][i]=0; num[rt]=0; if(l==r)return ; build(ls,l,mid); build(rs,mid+1,r);}void up(int rt,int l,int r){ int lnum=num[ls]; for(int i=0;i<5;++i)sum[rt][i]=sum[ls][i]; for(int i=0;i<5;++i)sum[rt][(lnum+i)%5]+=sum[rs][i]; num[rt]=num[ls]+num[rs];}void ins(int rt,int l,int r,int L,int R,ll w){ if(L<=l&&r<=R){ num[rt]=1-num[rt]; sum[rt][1]=num[rt]?w:0; return ; } if(L<=mid)ins(ls,l,mid,L,R,w); if(mid<R)ins(rs,mid+1,r,L,R,w); up(rt,l,r);}char op[maxn][15];int cnt,n,m;ll f;char ss[100];ll x[maxn],ox[maxn];int bin(int r,ll va){ int l=0; while(l<=r){ if(x[mid]==va)return mid; else if(va>x[mid]){ l=mid+1; } else r=mid-1; } return -1;}int main(){ while(~scanf("%d",&n)){ cnt=0; for(int i=0;i<n;++i){ scanf("%s",op[i]); if(op[i][0]=='a'||op[i][0]=='d'){ scanf("%I64d",&f); ox[i]=x[cnt++]=f; } } //离散化 sort(x,x+cnt); int j=0; for(int i=1;i<cnt;++i)if(x[i]!=x[j])x[++j]=x[i]; cnt=j+1; build(1,1,cnt); for(int i=0;i<n;++i){// printf("\n%s",op[i]); if(op[i][0]=='a'||op[i][0]=='d'){// printf("ox:%lld\n",ox[i]); int pos=bin(j,ox[i])+1; // printf("%d ",pos); ins(1,1,cnt,pos,pos,ox[i]); } else printf("%I64d\n",sum[1][3]); } } return 0;}
0 0
- hdu 4288 分组线段树
- hdu 4267 分组线段树
- HDU4267 分组线段树
- hdu4267分组线段树
- HDU 4288线段树
- hdu 4288 线段树
- HDU 4288 线段树
- hdu 4288(线段树) Coder
- hdu 4288 Coder (线段树)
- HDU 4288 Coder 线段树
- HDU-4288 Coder 线段树
- hdu-4288-Coder-线段树
- HDU 4288 Coder 线段树
- hdu 4288 Coder(线段树)
- HDU-4288-Coder(线段树)
- Coder- HDU 4288 线段树
- hdu 4288 Coder 线段树
- hdu 4288 Coder(线段树)
- Cocos2dx学习报告1
- java多线程生命周期
- android资源目录---assets与res/raw的不同assets
- YII框架分析笔记6:视图
- Yii学习笔记:关闭layout
- hdu 4288 分组线段树
- Java Object中wait()和notify()小议
- Yii学习笔记:进一步简化,提示信息跳转页面
- TCP编程(三)
- PHP最佳实践----phpass
- 2014年6月23日-6月29日(共11小时,剩4424小时)
- 请问如何修改Yii默认跳转的登录页面地址
- 管理者的三多三少
- esd emc 1