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 ...
随机推荐
- 利用微软类库 Visual Studio International Pack 汉字转拼音
首先,从微软官网下载安装包:http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=44CAC7F0-633B-477D-AED2 ...
- Objective-C 学习笔记(Day 1)
-------------------------------------------- Hello World //引入头文件 //c中的引入头文件的方式 //#include <stdio. ...
- warning
warning:statement has no effect [-Wunused-value]| 未能赋值,常见错误:m==1/for(i=0;i++;i<m)/
- makefile--#的不正确使用
/usr/vacpp/bin/makeC++SharedLib -o /cicm/src/dao/testcase/rel/FUNCTEST.ibmcpp -brtl -bnortllib -p100 ...
- 九度OJ 1385 重建二叉树
题目地址:http://ac.jobdu.com/problem.php?pid=1385 题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都 ...
- 九度OJ 1408 吃豆机器人 -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1408 题目描述: 淘宝公司内部有许多新鲜的小玩具,例如淘宝智能机器人.小时候,大家都玩过那个吃豆子的游戏吧,这机器 ...
- 判断UserAgent是否来自微信
iso: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko ...
- centos7下编译qt的mysql驱动
在编译mysql驱动之前,首先要安装mysql,可以使用yum安装,这里将不再介绍. 在将qt和mysql都安装好之后,首先找到mysql的头文件以及他的共享库,我的mysql是使用yum安装的,头文 ...
- 替换a链接的href和title
新项目准备验收,客户检测网页有安全隐患,说是当前网页使用“http://”有风险,指定外部链接不用“http://”怎么整…… 后来想到用JS替换字符串去操作,找了半天总算找到合用的,最终是用JQ去更 ...
- WF4的数据库 表
WF4的数据库 表 SQL 建表 SqlPersistenceProviderSchema.sql InstanceData 实例数据表 SqlPersistenceService_Schema.sq ...