hdu 4288 线段树 (离散化的离线算法)
发布日期:2022-03-30 18:18:25 浏览次数:65 分类:博客文章

本文共 1366 字,大约阅读时间需要 4 分钟。

输入描述:

输入第一行有一个n 表示接下来有n个命令

接下来的每一行包括一个修改命令 包括一个  字符串命令和一个整数   或者一个求和命令:

  ( 其意思为:  add x  将x插入的数组中,del x 从数组中删除,保持数组有序,保证不插入重复的不删除不存在的

    sum 命令表示输出数组中顺序%5==3 的所有元素之和 )

输出描述: 输出每一个sum命令的结果

输入样例:

9

add 1

add 2
add 3
add 4
add 5
sum
add 6
del 3
sum

输出样例:

3

4

#include 
#include
#include
#include
using namespace std;#define MAXN 100005struct Seg{ int lift,right; int num; long long sum[5];//存放每一段区间中顺序%5的各个值之和 void init_seg(int l,int r){ lift=l,right=r,num=0,memset(sum,0,sizeof(sum)); }} T[MAXN<<2];char cmd[MAXN];int x[MAXN];int ans[MAXN];void pushup(int i){//向上修改sum值 int t1=(i<<1)+1,t2=t1+1; for(int j=0; j<5; j++) T[i].sum[j]=T[t1].sum[j]; for(int j=T[t1].num%5,k=0; k<5; k++,j++) T[i].sum[j%5]+=T[t2].sum[k];}void build(int i,int l,int r){ T[i].init_seg(l,r); if(l==r) return; build((i<<1)+1,l,((l+r)>>1)); build((i+1)<<1,((l+r)>>1)+1,r);}int key,add_del;//add_del==1 添加一个数 add_del==-1删除一个数void update(int i){ if(T[i].lift==T[i].right){ T[i].num^=1; T[i].sum[0]= add_del==1 ? key : 0; return; } if(ans[(T[i].lift+T[i].right)>>1] >= key) update((i<<1)+1); else update((i+1)<<1); T[i].num+=add_del; pushup(i);}int main(){ int n,top; char ch[10]; while(~scanf("%d",&n)){ for(int i=top=0; i

转载地址:https://www.cnblogs.com/codeloveme/archive/2012/09/18/2690695.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:hdu 3033 分组背包(反分组背包)
下一篇:Scrapy-Redis分布式爬虫小白问题记录

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月30日 07时51分45秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【意外走向】大疆机甲大师Python API之八:计时——为性能测试展开1000次循环 2019-04-26
RFC#2457——Rust 语言支持非 ASCII 码标识符在 GitHub 引发的激辩(一) 2019-04-26
RFC#2457——Rust 语言选择支持非 ASCII 码标识符在 GitHub 引发的激辩(二) 2019-04-26
”为什么有这么多人执着于中文编程?”回答两千赞留念及回应 2019-04-26
【家务】盘点小孩玩具零件缺失情况 2019-04-26
开发中文 API 的一些策略 2019-04-26
从日本编程书籍《我的第一本编程书》中译版看中文例程如何扬长避短——标识符(一) 2021-06-29
中文命名标识符如何区分类型和变量 2021-06-29
编程术语成系统中文化的意义 2021-06-29
草蟒 Python 中文 API 与 IDE 支持尝鲜 2019-04-26
一种改进中文 API 可读性的方法:参数不限于在末尾 2019-04-26
中文编程开发工具的生存模式探讨 2019-04-26
写给木兰编程语言研发团队的公开信 2019-04-26
为什么要急着为「木兰」编程语言贴上“造假”的标签? 2019-04-26
编程语言国产化的关键一战——对肆意污名化“木兰”编程语言说“不” 2019-04-26
各大媒体对「木兰」编程语言的不当言论盘点 2019-04-26
戳破针对「木兰」编程语言的拙劣谣言 2019-04-26
为「木兰」编程语言添加对中文命名标识符的支持 2019-04-26
悬赏万元,重现「木兰」编程语言编译器 2019-04-26
跳出编程语言本身看中文编程语言设计 2019-04-26