hdu 4288 Coder
http://acm.hdu.edu.cn/showproblem.php?pid=4288
题意:add 就是在集合里面加上一个数x; del 就是从集合里删去一个数x; sum是求位置i%5==3的数的和。
tree[i].sum[5] 里面数组存的是不同位置%5之后分别对应的和。
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define maxn 100010 5 using namespace std; 6 7 char str[maxn][4]; 8 int x[maxn],xx[maxn]; 9 struct node 10 { 11 int r,l; 12 __int64 sum[6]; 13 int cnt; 14 }tree[maxn*4]; 15 16 void build(int i,int l,int r) 17 { 18 tree[i].l=l;tree[i].r=r; 19 for(int j=0; j<5; j++) tree[i].sum[j]=0; 20 tree[i].cnt=0; 21 if(l==r) return ; 22 int mid=(l+r)>>1; 23 build(i<<1,l,mid); 24 build(i<<1|1,mid+1,r); 25 } 26 27 void update(int i,int l,int r,int c,int num) 28 { 29 tree[i].cnt+=num; 30 if(tree[i].l==l&&tree[i].r==r) 31 { 32 tree[i].sum[0]+=c; 33 return ; 34 } 35 int mid=(tree[i].l+tree[i].r)>>1; 36 if(r<=mid) 37 { 38 update(i<<1,l,r,c,num); 39 } 40 else if(l>mid) 41 { 42 update(i<<1|1,l,r,c,num); 43 } 44 else 45 { 46 update(i<<1,l,mid,c,num); 47 update(i<<1|1,mid+1,r,c,num); 48 } 49 for(int j=0; j<5; j++) 50 { 51 tree[i].sum[j]=tree[i<<1].sum[j]+tree[i<<1|1].sum[((j-tree[i<<1].cnt)%5+5)%5]; 52 } 53 } 54 int bs(int l,int r,int data) 55 { 56 while(l<=r) 57 { 58 int mid=(l+r)>>1; 59 if(xx[mid]==data) 60 { 61 return mid; 62 } 63 else if(xx[mid]>data) 64 { 65 r=mid-1; 66 } 67 else 68 l=mid+1; 69 } 70 } 71 int main() 72 { 73 int n; 74 while(scanf("%d",&n)!=EOF) 75 { 76 int t1=0; 77 for(int i=0; i<n; i++) 78 { 79 scanf("%s",str[i]); 80 if(strcmp(str[i],"sum")) 81 { 82 scanf("%d",&x[i]); 83 xx[t1++]=x[i]; 84 } 85 } 86 sort(xx,xx+t1); 87 t1=unique(xx,xx+t1)-xx; 88 build(1,1,t1); 89 for(int i=0; i<n; i++) 90 { 91 int l1=bs(0,t1-1,x[i]); 92 if(!strcmp(str[i],"add")) 93 { 94 update(1,l1+1,l1+1,x[i],1); 95 } 96 else if(!strcmp(str[i],"del")) 97 { 98 update(1,l1+1,l1+1,-x[i],-1); 99 } 100 else if(!strcmp(str[i],"sum")) 101 { 102 printf("%I64d\n",tree[1].sum[2]); 103 } 104 } 105 } 106 return 0; 107 }
View Code
转载于:https://www.cnblogs.com/fanminghui/p/3913871.html
hdu 4288 Coder相关推荐
- hdu 4288 Coder (成都赛区 线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=4288 题意: 给出一个有序集合,3种操作.插入一个数,删除一个数,都保证序列有序.以及求和 其中求和是将下标%5 ...
- HDU 4288 Coder [线段树]
维护一个可以插入删除的有序序列,每次询问序列中位置mod5=3的数的和. CodeForces原题,因为时限给的太宽,数据太水,STL可以暴力过. 用线段树和平衡树都可以做这题,线段树需要先离散化,然 ...
- Coder HDU - 4288
Coder HDU - 4288 题意:你有n次操作,每次可以往集合里插入元素,删除元素,然后如果是求和操作的话,是求升序排序的情况下,pos%5==3的位置的数之和. 思路:因为要开权值线段树数很大 ...
- 数据结构---线段树
线段树 转载请注明出处,谢谢!http://blog.csdn.net/metalseed/article/details/8039326 持续更新中··· 一:线段树基本概念 1:概述 线段树 ...
- 线段树详解 (原理,实现与应用)
线段树详解 By 岩之痕 目录: 一:综述 二:原理 三:递归实现 四:非递归原理 五:非递归实现 六:线段树解题模型 七:扫描线 八:可持久化 (主席树) 九:练习题 一:综述 假设有编号从1到n的 ...
- 【转载】线段树题目2
1.hdu1166 敌兵布阵 更新节点,区间求和. 2.hdu1754 I Hate It 更新节点,区间最值. . 3.hdu1698 Just a Hook 成段更新,总区间求和. . 4.hdu ...
- 2012成都网络赛赛后【缺CHJ】
A Coder (HDU 4288,与Codeforces 85D相同) 应该用线段树写,我是块状链表水过了 #include<map>#include<cstdio>#inc ...
- HDU 4883 Best Coder Round 2 TIANKENG’s restaurant 解读
有一组数据是在客人到达和出发时间,问:多少把椅子的能力,以满足所有客人的需求,可以有一个地方坐下要求. 有些人甚至开始考虑暴力法,这些数据是少,其实这个问题很多数据, 暴力需求O(n*n)的时间效率, ...
- HDU题目分类大全【大集合】
基础题: 1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.105 ...
最新文章
- 【codeforces 508B】Anton and currency you all know
- 在Angular中有多个字段
- Android 实现文件上传功能(upload)
- 牛客 数素数 (20)
- 【嵌入式】嵌入式天地博客汇总
- Create React App 2.0 正式发布:Babel 7、webpack 4 等
- 二进制编译安装mysql(centos6、7)和源码编译bind
- php获取时间计算时间差
- 8.RabbitMQ实战 --- 从Web端管理RabbitMQ
- 扫雷外挂(扫雷辅助程序)
- [Python从零到壹] 三十四.OpenCV入门详解——显示读取修改及保存图像
- 融云 SDK 5.0.0 功能迭代
- 2011 北邮计算机研究生各组分数线
- P3717 [AHOI2017初中组]cover——洛谷(差分)
- 谷胱甘肽修饰CdTe/CdS量子点(GSH-CdTe/CdSQDs);溶菌酶(Lyz)修饰Ag2S量子点(Lyz-Ag2S QDs)齐岳定制服务
- python安装random_如何安装python randon
- 安装xmanager linux系统,xmanager linux版
- 刘润:进化的力量年度演讲全文图解
- 期货平仓是先开先平吗(期货怎么先平新仓)
- Java JNA (二)—— dll回调函数实现
热门文章
- 量化指标公式源码_通达信实用指标:《看涨跌》指标公式源码
- mysql存储过程queue_mysql – 在Sequelize中调用输入/输出类型存储过程
- filter vue 循环_Vue - 基础
- python动态执行代码_第6.6节 Python动态执行小结
- python随机抽号_随手小代码——Python 从集合中随机抽取元素
- 如何优雅的解决mac安装zsh不执行.bash_profile
- Android获取顶部状态栏statusBar高度、底部导航栏navigationBar高度
- 思科安全:加密流量威胁检测、加密流量威胁和恶意软件检测、识别无线干扰或威胁、Talos 情报源可加强对已知和新型威胁的防御、分布式安全异常检测...
- DNS RR代码和含义
- 对计算属性中get和set的理解