HDU 4288 Coder 【线段树+离线处理+离散化】
题意略。
离线处理,离散化。然后就是简单的线段树了。需要根据mod 5的值来维护。具体看代码了。
/*
线段树+离散化+离线处理
*/ #include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
#define N 100010
ll sum[N<<2][5];
int a[N], n, m, cnt[N<<2]; struct node {
char c;
int x;
} q[N];
void Up(int rt) {
cnt[rt] = cnt[rt<<1] + cnt[rt<<1|1];
for (int i=0; i<5; i++)
sum[rt][i] = sum[rt<<1][i] + sum[rt<<1|1][(i-cnt[rt<<1]%5+5)%5];
}
void add(int idx, int val, int l, int r, int rt) {
if (l == r) {
cnt[rt] = 1;
sum[rt][1] = val;
return ;
}
int mid = (l + r) >> 1;
if (idx <= mid) add(idx, val, l, mid, rt<<1);
else add(idx, val, mid+1, r, rt<<1|1);
Up(rt);
}
void del(int idx, int l, int r, int rt) {
if (l == r) {
sum[rt][1] = cnt[rt] = 0;
return ;
}
int mid = (l + r) >> 1;
if (idx <= mid) del(idx, l, mid, rt<<1);
else del(idx, mid+1, r, rt<<1|1);
Up(rt);
}
int main() { char s[10];
while (scanf("%d", &n) == 1) {
m = 0;
for (int i=0; i<n; i++) {
scanf(" %s", s);
q[i].c = s[0];
if (s[0] != 's') {
scanf("%d", &q[i].x);
a[m++] = q[i].x;
}
}
sort(a, a+m);
m = unique(a, a+m) - a;
memset(cnt, 0, sizeof(cnt));
memset(sum, 0, sizeof(sum));
int pos;
for (int i=0; i<n; i++) {
if (q[i].c == 's') printf("%I64d\n", sum[1][3]);
else {
pos = lower_bound(a, a+m, q[i].x) - a + 1;
if (q[i].c == 'a') add(pos, q[i].x, 1, m, 1);
else del(pos, 1, m, 1);
}
}
} return 0;
}
HDU 4288 Coder 【线段树+离线处理+离散化】的更多相关文章
- hdu 4288 Coder (线段树+离线)
题意: 刚开始有一个空集合.有三种操作: 1.往集合中加入一个集合中不存在的数 x 2.从集合中删除一个已经存在的数 x 3.计算集合的digest sum并输出. digest sum求 ...
- HDU 4288 Coder(线段树)
题意: 给定三种操作 1. add x 向序列中添加x,添加之后序列还保持有序 2. del x 删除序列中值为x的元素 3. sum 求下边模5等于3的元素和 思路: 直接暴力也可以过,就是看暴 ...
- HDU 4638-Group(线段树+离线处理)
题意: 给n个编号,m个查询每个查询l,r,求下标区间[l,r]中能分成标号连续的组数(一组内的标号是连续的) 分析: 我们认为初始,每个标号为一个组(线段树维护区间组数),从左向右扫序列,当前标号, ...
- HDU 4417 【线段树+离线处理】
http://acm.hdu.edu.cn/showproblem.php?pid=4417 题意:找出给定区间内,有多少个数小于等于给定的数.用线段树维护的话会超时,要用到线段树的离线操作,对询问与 ...
- HDU 3333 & 3874 (线段树+离线询问)
两个题目都是求区间之内,不重复的数字之和,3333需要离散化处理................. 调试了一下午........说多了都是泪........... #include <iostr ...
- HDU - 3874 Necklace (线段树 + 离线处理)
欢迎參加--每周六晚的BestCoder(有米! ) Necklace Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 65536/3 ...
- Necklace HDU - 3874 (线段树/树状数组 + 离线处理)
Necklace HDU - 3874 Mery has a beautiful necklace. The necklace is made up of N magic balls. Each b ...
- POJ-2528 Mayor's posters (线段树区间更新+离散化)
题目分析:线段树区间更新+离散化 代码如下: # include<iostream> # include<cstdio> # include<queue> # in ...
- hdu 4031 attack 线段树区间更新
Attack Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)Total Subm ...
随机推荐
- HW-IP合法性_Java
描述 现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉 ...
- MSBuild could not create or connect to a task host with runtime "CLR2" and architecture "x86".
vs2010 and vs2012 are installed on target machine. Build c# project using vs2010, following error oc ...
- ThinkPHP3.2 加载过程(一)
加载过程(官方介绍) : 用户URL请求 调用应用入口文件(通常是网站的index.php) 载入框架入口文件(ThinkPHP.php) 记录初始运行时间和内存开销 系统常量判断及定义 载入框架引导 ...
- jquery与后台相互传递中文参数乱码
前端.后台传递中文参数,乱码的情况: var a="参数乱码"; //编译两次 window.location.href=encodeURI(encodeURI(&q ...
- linux 配置Socks51
VPN大家耳熟能详,但是socks用到的人比较少,那什么是socks呢?请看第二段或者百度百科,socks分别有4和5两个版本,现在5为主流.工作中经常用VPN访问国外,但是同时国内的速度又慢了,让人 ...
- Linux内核Radix Tree(三):API介绍
1. 单值查找radix_tree_lookup 函数radix_tree_lookup执行查找操作,查找方法是:从叶子到树顶,通过数组索引键值值查看数组元素的方法,一层层地查找slot.其列 ...
- PC软件-实用工具 True Launch Bar
True Launch Bar 官网 增强及自定义window任务栏快捷方式管理. 有免费版的Free Launch Bar 官网
- 【原】Object 异常静态
//所有的类都继承Object类: Object a=; Object b="ddfasfda"; //正常情况下,都会省略掉:Object:但实际上是存在的: class tes ...
- Linux启用MySQL的InnoDB引擎
前几天公司的一个项目组的同事反应说公司内部的一台Linux服务器上的MySQL没有InnoDB这个引擎,我当时想应该不可能啊,MySQL默认应该 就已经安装了这个引擎的吧,于是上服务器去看了看,发现还 ...
- windows 系统下,小数据量Oracle用户物理备份
环境:windows Server 2003 oracle 10g,系统间备份 目标系统创建共享文件,原系统挂载共享目录 写批处理脚本,用任务计划定时调用 Rem * 由于系统实时性要求不是很高,数据 ...