HDU 4288 线段树+离散化
题意:
n个操作
在[1, 100000] 的区间上add 或del数( 必不会重复添加或删除不存在的数)
sum 求出整个集合中 (下标%5 == 3 位置) 的数 的和
注意数据类型要64位
#include <stdio.h>
#include <string.h>
#include <queue>
#include <set>
#include <functional>
#include <map> #define N 101000
#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define Mid(x,y) ((x+y)>>1)
#define ll __int64
using namespace std;
inline ll Max(ll a, ll b){ return a>b?a:b;}
inline ll Min(ll a, ll b){ return a<b?a:b;} ll Point[N]; struct node{
int l,r;
ll sum[5];
int num;
}tree[N*4]; void build( int l, int r, int id){
tree[id].l = l, tree[id].r = r;
memset(tree[id].sum,0,sizeof(tree[id].sum));
tree[id].num = 0; if(l==r)return ;
int mid = Mid(l, r);
build(l, mid, L(id));
build(mid+1, r, R(id));
}
void Updata_up(int id){
tree[id].num = tree[L(id)].num + tree[R(id)].num ; for(int i=0;i<5;i++)
tree[id].sum[i] = tree[L(id)].sum[i]; for(int i=0;i<5;i++) tree[id].sum[ (tree[L(id)].num + i)%5 ] += tree[R(id)].sum[i]; }
void insert(int pos, int id, ll data, bool add){ // add = true 插入data =false 删除data
if(tree[id].l == tree[id].r){
if(add)
{ tree[id].num = 1; tree[id].sum[1] = data;}
else
{ tree[id].num = 0; tree[id].sum[1] = 0; } return ;
} int mid = Mid(tree[id].l, tree[id].r); if( pos <= mid) insert(pos, L(id), data, add);
else insert(pos, R(id), data, add); Updata_up(id);
} struct QUE{
char c;
ll u;
}que[N];
set<ll> tempset; map<ll, int> mymap; void Input(int n){
ll u; char s[5];
tempset.clear();
mymap.clear();
for(int i = 1; i <= n; i++){
scanf("%s", s);
que[i].c = s[0]; if(s[0]!='s')scanf("%I64d",&u), que[i].u = u, tempset.insert(u);
} set<ll> ::iterator p = tempset.begin();
int size = tempset.size();
for(int i = 1; i <= size ; i++,p++){
mymap.insert(pair<ll, int>(*p, i));
Point[i] = *p;
}
}
int go(ll x){
return mymap.find(x) -> second;
}
int main(){
int n;
while(~scanf("%d",&n)){
build(1,100000,1); Input(n); for(int i = 1; i<=n; i++){
ll u = que[i].u;
if(que[i].c == 'a')
insert(go(u),1,u,1); else if(que[i].c == 'd')
insert(go(u),1,u,0); else if(que[i].c == 's')
printf("%I64d\n", tree[1].sum[3]); }
}
return 0;
}
/*
9
add 1
add 2
add 3
add 4
add 5
sum
add 6
del 3
sum ans:
3
4 6
add 1
add 3
add 5
add 7
add 9
sum ans:
5 */
HDU 4288 线段树+离散化的更多相关文章
- ZOJ 2301/HDU 1199 线段树+离散化
给这个题目跪了两天了,想吐简直 发现自己离散化没学好 包括前一个离散化的题目,实际上是错了,我看了sha崽的博客后才知道,POJ那题简直数据弱爆了,本来随便一组就能让我WA掉的,原因在于离散化的时候, ...
- hdu 4288 线段树 暴力 **
题意: 维护一个有序数列{An},有三种操作: 1.添加一个元素. 2.删除一个元素. 3.求数列中下标%5 = 3的值的和. 解题思路: 看的各种题解,今天终于弄懂了. 由于线段树中不支持添加.删除 ...
- hdu 5792 线段树+离散化+思维
题目大意: Given a sequence A with length n,count how many quadruple (a,b,c,d) satisfies: a≠b≠c≠d,1≤a< ...
- hdu 4288 线段树+离线+离散化
http://acm.hdu.edu.cn/showproblem.php?pid=4288 開始的时候,果断TLE,做的方法是,线段树上只维护%5==3的坐标,比方1 2 3 4 5 6 7 假设 ...
- HDU 1542 线段树离散化+扫描线 平面面积计算
也是很久之前的题目,一直没做 做完之后觉得基本的离散化和扫描线还是不难的,由于本题要离散x点的坐标,最后要计算被覆盖的x轴上的长度,所以不能用普通的建树法,建树建到r-l==1的时候就停止,表示某段而 ...
- hdu 5877 线段树(2016 ACM/ICPC Asia Regional Dalian Online)
Weak Pair Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- hdu 1542 线段树扫描(面积)
Atlantis Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- HDU5124:lines(线段树+离散化)或(离散化思想)
http://acm.hdu.edu.cn/showproblem.php?pid=5124 Problem Description John has several lines. The lines ...
- POJ 2528 Mayor's posters(线段树+离散化)
Mayor's posters 转载自:http://blog.csdn.net/winddreams/article/details/38443761 [题目链接]Mayor's posters [ ...
随机推荐
- js调用.net后台事件,和后台调用前台等方法以及js调用服务器控件的方法
http://blog.csdn.net/deepwishly/article/details/6670942 ajaxPro.dll基础教程(前台调用后台方法,后台调用前台方法) 1. javaS ...
- iOS push全方位解析(二)【译文】"——生成OpenSSL证书,Provisioning Profile
这是一篇来自raywenderlich的教程,内容翔实!结构简单透彻.讲解循序渐进.文章质量上乘!是一篇难的的博文!使用半瓶的英语水平翻译了一下: 1.[iOS push全方位解析](一) push的 ...
- Shortcut Collapse project or projects in the Solution Explorer Microsoft Visual Studio 2008
The standard windows keyboard shortcuts for expanding and collapsing treeviews are: Numeric Keypad * ...
- 小爬虫。爬取网站多页的通知标题并存取在txt文档里。
爬取网页中通知标题的内容展示: this is 1 page!<精算学综合>科目考试参考大纲2016年上半年研究生开题报告评议审核结果公示[答辩]2016下半年研究生论文答辩及学位评定 ...
- JSP 结构
网络服务器需要一个JSP引擎,也就是一个容器来处理JSP页面. 容器负责截获对JSP页面的请求.本教程使用内嵌JSP容器的Apache来支持JSP开发. JSP容器与Web服务器协同合作,为JSP的正 ...
- JSP内置对象(下)
JSP中共有9大内置对象: out对象 requset对象 response对象 session对象 pageContext对象 application对象 config对象 page对象 excep ...
- jsp页面传参到action出现乱码
jsp页面以连接方式传参到后台action时( <a href="http://localhost:8080/SocialBook/pages/bookdetail?book.id=& ...
- development period
- 2.5.2 使用alertdialog 创建列表对话框
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...
- git在myelispse中的安装
1.git在myelispse中的安装 http://blog.csdn.net/chinaonlyqiu/article/details/8830050