hdu4288 Coder(线段树单点更新)
题意:支持增删,查操作,最后的序列式递增的。
做法:主要是如何维护mod5的sum值,这里左儿子可以不用管,关键是右儿子的处理,可以假设右儿子有t个节点,左儿子有cnt个节点,
则令(t+cnt)MOD 5= i 则tmod5=(i-cnt MOD 5)MOD 5 ,所以剩下的就是维护每个节点的节点总数以及相应的和就好了。
1 #include<cstring>
2 #include<algorithm>
3 #include<cstdio>
4 typedef long long ll;
5 using namespace std;
6 #define lz u<<1,l,mid
7 #define rz u<<1|1,mid+1,r
8 const int MAX = +;
9 struct node
{
ll sum[],cnt;
}tree[MAX<<];
int num[MAX],rnum[MAX],check[MAX];
void build(int u,int l,int r)
{
for(int i=;i<;i++) tree[u].sum[i]=;
tree[u].cnt=;
if(l!=r)
{
int mid=(l+r)>>;
build(lz); build(rz);
}
}
void add(int u,int l,int r,int x,int d,int cur)
{
if(l==r)
{
tree[u].sum[]+=d;
tree[u].cnt+=cur;
return;
}
int mid=(l+r)>>;
if(x<=mid) add(lz,x,d,cur);
else add(rz,x,d,cur);
tree[u].cnt=tree[u<<].cnt+tree[u<<|].cnt;
for(int i=;i<;i++)
{
tree[u].sum[i]=tree[u<<].sum[i]+tree[u<<|].sum[((i-tree[u<<].cnt)%+)%];
}
}
int main()
{
int n,a; char str[];
while(scanf("%d",&n)==)
{
int cur=;
for(int i=;i<n;i++)
{
scanf("%s",str);
if(str[]=='a')
{
check[i]=;
scanf("%d",&a);
num[i]=rnum[cur++]=a;
}
else if(str[]=='d')
{
check[i]=;
scanf("%d",&num[i]);
}
else check[i]=;
}
sort(rnum,rnum+cur);
int tot=unique(rnum,rnum+cur)-rnum;
if(tot!=) build(,,tot);
for(int i=;i<n;i++)
{
if(check[i]==)
{
int pos=lower_bound(rnum,rnum+tot,num[i])-rnum+;
add(,,tot,pos,num[i],);
}
else if(check[i]==)
{
int pos=lower_bound(rnum,rnum+tot,num[i])-rnum +;
add(,,tot,pos,-num[i],-);
}
else
{
if(tot==) printf("0\n");
else
{
printf("%I64d\n",tree[].sum[]);
}
}
}
}
return ;
}
hdu4288 Coder(线段树单点更新)的更多相关文章
- HDU 1754 I Hate It 线段树单点更新求最大值
题目链接 线段树入门题,线段树单点更新求最大值问题. #include <iostream> #include <cstdio> #include <cmath> ...
- HDU 1166 敌兵布阵(线段树单点更新)
敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...
- poj 2892---Tunnel Warfare(线段树单点更新、区间合并)
题目链接 Description During the War of Resistance Against Japan, tunnel warfare was carried out extensiv ...
- HDU 1166 敌兵布阵(线段树单点更新,板子题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- POJ 1804 Brainman(5种解法,好题,【暴力】,【归并排序】,【线段树单点更新】,【树状数组】,【平衡树】)
Brainman Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10575 Accepted: 5489 Descrip ...
- HDU 1166 敌兵布阵(线段树单点更新,区间查询)
描述 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况 ...
- POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和)
POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和) 题意分析 卡卡屋前有一株苹果树,每年秋天,树上长了许多苹果.卡卡很喜欢苹果.树上有N个节点,卡卡给他们编号1到N,根 ...
- HDUOJ----1166敌兵布阵(线段树单点更新)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)
HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ...
- POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化)
POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化) 题意分析 前置技能 线段树求逆序对 离散化 线段树求逆序对已经说过了,具体方法请看这里 离散化 有些数 ...
随机推荐
- [Swift]Array(数组)扩展
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Django day 34 过滤课程,登录,redis,python操作redis
一:过滤课程, 二:登录 三:redis, 四:python操作redis
- goalng——time包学习
1.星期:type Weekday int const ( Sunday Weekday = iota Monday Tuesday Wednesday Thursday Friday Saturda ...
- 【洛谷3345_BZOJ3924】[ZJOI2015]幻想乡战略游戏(点分树)
大概有整整一个月没更博客了 -- 4 月为省选爆肝了一个月,最后压线进 B 队,也算给 NOIP2018 翻车到 316 分压线省一这个折磨了五个月的 debuff 画上了一个不算太差的句号.结果省选 ...
- 构造+暴力 Codeforces Round #283 (Div. 2) B. Secret Combination
题目传送门 /* 构造+暴力:按照题目意思,只要10次加1就变回原来的数字,暴力枚举所有数字,string大法好! */ /************************************** ...
- 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛-K-Matrix Multiplication(矩阵乘法)
题目描述 In mathematics, matrix multiplication or matrix product is a binary operation that produces a m ...
- 转 mysql 5.7版本修改编码为utf-8
刚开始学习MySQL,下载的是官网最新版本 5..7.14,使用cmd输入中文时报错,于是开始修改mysql默认编码(windows下) 首先通过 show variables like 'chara ...
- Fiddler抓取Intellij Idea中执行的web网络请求
首先可以打开命令行 输入:ipconfig 找到本机配置的IP地址 这里是: 192.168.97.122 或者打开Fiddler 点击如下图片中的小三角符号:将鼠标放在online的位置,也可以看到 ...
- Jmeter接口测试---JDBC简单实践
我的环境:MySQL:mysql-5.6.24-win32 jdbc驱动:mysql-connector-java-5.1.22-bin.jar JMeter:apache-jmeter-2.13 1 ...
- java树型结构的数据展现设计
在做一个需求管理的页面时,需求的展现是不限层级树型结构,需求下还可以分拆任务,页面要展现的字段有20多个,而且需求采用通用表单设计,db采用大宽表存储,有一百多个字段.目前数据量不大,第一版采用普通的 ...