HDU 4383 To The Moon 解题报告

HDU 4383 To The Moon

题意翻译

已知一个长为\(n\)的序列\(a\),你需要进行下面的四种操作。

C l r d 将区间\([l,r]\)中的数加上\(d\),同时时间加\(1\)

Q l r 查询当前时间区间\([l,r]\)中所有数的和

H l r t 查询时间为\(t\)时区间\([l,r]\)中所有数的和

B t 将当前时间置为\(t\)

输入输出格式

输入格式

多组数据

每组数据第一行两个整数\(n,m\)

第二行\(n\)个整数,代表时间为\(0\)时的数列

后面\(m\)行,每行若干个整数,代表一次操作

输出格式

每一个查询操作输出一行作为答案

输入输出样例

输入样例#1

10 5
1 2 3 4 5 6 7 8 9 10
Q 4 4
Q 1 10
Q 2 4
C 3 6 3
Q 2 42 4
0 0
C 1 1 1
C 2 2 -1
Q 1 2
H 1 2 1

输出样例#1

4
55
9
150
1

说明

对于所有的数据有\(n,m\le 10^5,|a_i| \le 10^9\),\(|d|\le 10^4\),保证所有操作合法。


没什么可说的,就是标记永久化一下进行区间修改。

这方面的细节很多,以后需要多加注意。


Code:

#include <cstdio>
#include <cstring>
#define ll long long
const int N=1e5+10;
int ch[N*30][2],tot,root[N],n,m;
ll sum[N*30],tag[N*30],a[N];
#define ls ch[now][0]
#define rs ch[now][1]
void build(int &now,int l,int r)
{now=++tot;ls=rs=sum[now]=tag[now]=0;if(l==r){sum[now]=a[l];return;}int mid=l+r>>1;build(ls,l,mid),build(rs,mid+1,r);sum[now]=sum[ls]+sum[rs];
}
void change(int las,int &now,int L,int R,int l,int r,ll d)
{now=++tot;ls=ch[las][0],rs=ch[las][1];if(L==l&&R==r){tag[now]=tag[las]+d;sum[now]=sum[las]+d*(R+1-L);ls=ch[las][0],rs=ch[las][1];return;}int Mid=L+R>>1;if(r<=Mid) change(ch[las][0],ls,L,Mid,l,r,d);else if(l>Mid) change(ch[las][1],rs,Mid+1,R,l,r,d);else change(ch[las][0],ls,L,Mid,l,Mid,d),change(ch[las][1],rs,Mid+1,R,Mid+1,r,d);tag[now]=tag[las];sum[now]=sum[ls]+sum[rs]+tag[now]*(R+1-L);
}
ll query(int now,int L,int R,int l,int r)
{if(!now||now>tot) return 0;if(l==L&&r==R) return sum[now];int Mid=L+R>>1;ll delta=tag[now]*(r+1-l);if(r<=Mid) return query(ls,L,Mid,l,r)+delta;else if(l>Mid) return query(rs,Mid+1,R,l,r)+delta;else return query(ls,L,Mid,l,Mid)+query(rs,Mid+1,R,Mid+1,r)+delta;
}
void work()
{tot=0;int t=0;for(int i=1;i<=n;i++) scanf("%lld",a+i);build(root[0],1,n);char op[4];ll d;for(int l,r,k,i=1;i<=m;i++){scanf("%s",op);if(op[0]=='C'){scanf("%d%d%lld",&l,&r,&d);++t;change(root[t-1],root[t],1,n,l,r,d);}else if(op[0]=='Q'||op[0]=='H'){scanf("%d%d",&l,&r);if(op[0]=='Q') k=t;else scanf("%d",&k);printf("%lld\n",query(root[k],1,n,l,r));}elsescanf("%d",&t),tot=root[t+1]-1;}
}
int main()
{while(scanf("%d%d",&n,&m)!=EOF) work();return 0;
}

2018.12.2

转载于:https://www.cnblogs.com/butterflydew/p/10055576.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三章 阴阳的工作机制(1)

一、道生一&#xff0c;一生二&#xff0c;二生三&#xff0c;三生万物1.易有太极&#xff0c;是生两仪上面&#xff0c;对阴阳已经讨论了很多&#xff0c;对这个问题已经有所了解。现在我们来讨论"阴阳的工作机制"&#xff0c;弄清楚这个以后对理解《伤寒论》的许多…

tcp窗口滑动以及拥塞控制

转自&#xff1a;http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP协议作为一个可靠的面向流的传输协议&#xff0c;其可靠性和流量控制由滑动窗口协议保证&#xff0c;而拥塞控制则由控制窗口结合一系列的控制算法实现。 一、滑动窗口协议 关于这部分自己不…

jquery 操作日期、星期、元素的追加

主要实现日期的显示&#xff0c;获取年月日&#xff0c;时分秒、星期、判断闰年<script language"javascript" >$(document).ready(function(){function show(){var mydatenew Date();var str "" mydate.getFullYear() "年"; …

简单易懂的芯片科普漫画,帮你打开高深的新技术大门

大家好&#xff0c;我是写代码的篮球球痴&#xff0c;今天给大家推荐一本新书&#xff0c;是华为麒麟团队出版的&#xff0c;主要是让大家了解芯片的结构&#xff0c;这对很多人理解计算机是非常有帮助的。希望大家喜欢。喜欢书籍的同学在文章下面评论&#xff0c;我们会选出评…

UDT协议详细分析

UDT协议的主要特性有哪些&#xff1f; 基于UDP的应用层协议&#xff1a; 有基本网络知识的朋友都知道TCP和UDP的区别和使用场景&#xff0c;但是有没有一种协议能同时兼顾TCP协议的安全可靠和UDP协议的高效&#xff0c;那么UDT就是一种。 面向连接的协议&#xff1a;面向连接…

书摘---创业36条军规1:创业是怎么回事

这本书是电子版&#xff0c;是我这几年唯一购买的一本电子版本的图书。一来是想尝尝新鲜&#xff0c;二来是想看看书中有什么可以学习的东西。 本人一直在打工&#xff0c;所以不太了解创业的情况&#xff0c;站在巨人的肩膀上才能看的更远&#xff0c;看了此书不代表我就想创业…

在STM32上模拟Linux自动初始化过程

Linux中有很多编程思想可以学习&#xff0c;很多大佬把这些思想、机制运用到单片机的编程上&#xff0c;STM32 模拟Linux kernel自动初始化流程。通常我们写程序都是按照这个套路&#xff0c;一个函数一个函数按照顺序逻辑一个一个的执行下去。如果逻辑非常复杂&#xff0c;涉及…

日志配置(springboot、mybatis、Lombok)

Spring Boot在所有内部日志中使用Commons Logging&#xff0c;但是默认配置也提供了对常用日志的支持&#xff0c;如&#xff1a;Java Util Logging&#xff0c;Log4J, Log4J2和Logback。每种Logger都可以通过配置使用控制台或者文件输出日志内容 SLF4J——Simple Logging Faca…

先知

他这样说爱情&#xff1a;Love gives naught but itself and takes naught but from itself.Love possesses not nor would it be possessed.For love is sufficient unto love.转载于:https://www.cnblogs.com/belial/archive/2007/09/23/903433.html

TCP与UDP的选择--结合QQ来说明

TCP与UDP的选择如果比较UDP包和TCP包的结构&#xff0c;很明显UDP包不具备TCP包复杂的可靠性与控制机制。与TCP协议相同&#xff0c;UDP的源端口数和目的端口数也都支持一台 主机上的多个应用。一个16位的UDP包包含了一个字节长的头部和数据的长度&#xff0c;校验码域使其可以…

Xampp修改数据库默认用户root的密码

Xampp数据库默认用户root&#xff0c;密码为空&#xff0c;修改密码的位置&#xff1a;xampp/passwords.txt转载于:https://www.cnblogs.com/testlife/archive/2012/02/08/2342438.html

1.6元的蓝牙芯片,你能想得到?

前不久喵了个咪在群里发了一个1.6元的SOP8蓝牙芯片的信息&#xff0c;引起了大家的热烈讨论&#xff0c;我当然也按捺不住鸡冻的心情&#xff0c;立马下单买了几片。淘宝连接&#xff1a;KT6368Ahttps://item.taobao.com/item.htm?spma1z09.2.0.0.74a52e8dTpp1my&id630430…

pyplot交互地画多个plot

下面的代码&#xff0c;可以无阻碍地show 5个figure&#xff0c;相当于开启了ipython的interactive 模式 具体参见stackoverflow: in matplotlib, is there a way to pop up a figure asynchronously? 1 #!/usr/bin/python2 import pylab as plb3 import matplotlib.pyplot as…

又是一年中秋节,好想举杯邀明月

世事一场大梦&#xff0c;人生几度新凉。夜来风叶已鸣廊&#xff0c;看取眉间鬓上。 酒贱常愁客少&#xff0c;月明多被云妨。中秋谁与共孤光&#xff0c;把盏凄然北望。 简策写虚名&#xff0c; 蝼蚁侵枯骨。千古光阴一霎时&#xff0c;且进杯中物。 二十四年过去&#xff…

UDT内部代码分析

一. 报文发送 1.CSndQueue::worker中调用CChannel::sendto发送数据报文。 2.CSndQueue::sendto中调用CChannel::sendto发送其他报文, 种类较多主要有: 1)CUDT::connect中调用CSndQueue::sendto发送建立连接请求。 2) CUDT::sendCtrl中调用CSndQueue::sendto发送控制报文。 …

ADC采样效应及相关影响解剖

在前述文章&#xff0c;BUCK电路模拟补偿器的数字化过程 &#xff0c;我们讨论了模拟补偿器的数字化&#xff0c;事实上&#xff0c;数字化过程的第一个重要的环节就是ADC对反馈量的采样&#xff0c;本文就重点探讨一下由于ADC采样频率带来的一些问题&#xff0c;进而讨论一下相…

2012.2.9日晚亚马逊的一个错误链接截图

1现在时间 2 问题链接 http://www.amazon.cn/%E5%81%A5%E8%BA%AB%E5%99%A8%E6%A2%B0/b/refsa_menu_sef7?ieUTF8&node42787071 3 点击后结果 http://www.amazon.cn/gp/product/B0073RWUQA/refs9_hps_bw_g200_ir05?pf_rd_mA1AJ19PSB66TGU&pf_rd_scenter-5&pf_rd_r0…

Kotlin 的 Array 转 List

Kotlin 的 Array 转 List array.toList() as List<T> 1Kotlin 的 Array 转 ArrayList array.toList() as ArrayList<String>转载于:https://www.cnblogs.com/weizhxa/p/10068944.html

[转]关于sizeof()的一些思考

关键字&#xff1a;sizeof&#xff0c;字节对齐&#xff0c;多继承&#xff0c;虚拟继承&#xff0c;成员函数指针 前向声明&#xff1a; sizeof&#xff0c;一个其貌不扬的家伙&#xff0c;引无数菜鸟竟折腰&#xff0c;小虾我当初也没少犯迷糊&#xff0c;秉着“辛苦我一个…

RCF的优势--分布式应用

RCF(远程调用框架)是一个可以移植的C进程间通信框架&#xff0c;使用C语言特性&#xff0c;提供了一个简单高效的编写分布式C软件的途径。RCF利用编译时多态清晰分开了接口和实现. 和传统的RPC框架如CORBA,DCOM,.NETRemoting,WCF,WS-*,等所支持的面向对象方式不一样&#xff0c…