cogs 2632. [HZOI 2016] 数列操作d
2632. [HZOI 2016] 数列操作d
★★★ 输入文件:segment.in
输出文件:segment.out
简单对比
时间限制:3 s 内存限制:512 MB
【题目描述】
一个长度为n的序列,一开始序列数的权值都是0,有m次操作
支持两种操作:
1 L R x,给区间[L,R]内位置为pos的数加上(pos-L)*x
0 L R,查询区间[L,R]内的权值和
最终答案对109+7取模。
【输入格式】
第一行两个数n,m,表示序列长度和操作次数
接下来m行,每行描述一个操作,有如下两种情况:
1 L R x,给区间[L,R]内位置为pos的数加上(pos−L)×x
0 L R,查询区间[L,R]内的权值和
【输出格式】
每一个0操作输出一个整数模109+7
【样例输入】
5 5
0 2 3
1 4 5 1
1 1 5 5
0 1 4
0 2 3
【样例输出】
0
30
15
【提示】
对于30%的数据 n,m<=2000
对于100%的数据,n,m<=300000
保证读入的都是非负整数,所有的x<=10000
【来源】
感谢神犇
非常感谢神犇
非常非常感谢神犇
自动选择评测机
gcc/g++4.8.5
gcc/g++4.8.5 -O2
gcc/g++4.8.5(C++11)
gcc/g++4.6.3
gcc/g++4.6.3 -O2
提交代码 Pascal C C++
#include<bits/stdc++.h>
#define ll long long
#define INF 1000000007
#define maxn 300005
using namespace std;
ll S[maxn];
ll lz1[maxn<<],lz2[maxn<<];//lz1 就是记录那个-L *x的 lz2就是记录 pos*x的
ll dat[maxn<<];
void Add(int rt,int l,int r,int ss,int tt,ll qx,ll posx){
if(ss>r||tt<l) return;//判断是否越界
if(ss<=l&&r<=tt){//全部包含
lz1[rt]=(lz1[rt]+qx)%INF;//永久化标记
lz2[rt]=(lz2[rt]+posx)%INF;
dat[rt]=(dat[rt]+qx*(r-l+)%INF+posx*((S[r]-S[l-])%INF)%INF)%INF;// (S[r]-S[l-1])就是那一段等差数列的和 预处理出来了直接作一个差就行了
return;
}
int mid=(l+r)>>;
Add(rt*,l,mid,ss,tt,qx,posx);Add(rt*+,mid+,r,ss,tt,qx,posx);
dat[rt]=(dat[rt*]+dat[rt*+]+lz1[rt]*(r-l+)%INF+lz2[rt]*((S[r]-S[l-])%INF)%INF)%INF;
}
ll Get(int rt,int l,int r,int ss,int tt){
if(ss>r||tt<l) return ;
if(ss<=l&&r<=tt) return dat[rt];
int lll=max(l,ss);
int rr=min(r,tt);
int mid=(l+r)>>;
return (lz1[rt]*(rr-lll+)%INF+lz2[rt]*((S[rr]-S[lll-])%INF)%INF+Get(rt*,l,mid,ss,tt)+Get(rt*+,mid+,r,ss,tt))%INF;
}
int main(){
freopen("segment.in","r",stdin);freopen("segment.out","w",stdout);
int n,m;scanf("%d%d",&n,&m);//输入 不说了 哈哈
for(int i=;i<=n;i++) S[i]=S[i-]+i;//这里就是预处理一个前缀和
for(int i=;i<=m;i++){
int Type;scanf("%d",&Type);
if(Type){
int l,r;ll x,posx;scanf("%d%d%lld",&l,&r,&x);
posx=(INF-l)*x%INF;//posx 就是那个-L 这里加上一个INF 是因为——L是负数 会炸的!!
Add(,,n,l,r,posx,x);
}
else{
int l,r;scanf("%d%d",&l,&r);
printf("%lld\n",Get(,,n,l,r)%INF);
}
}
return ;
}
cogs 2632. [HZOI 2016] 数列操作d的更多相关文章
- COGS 2633. [HZOI 2016] 数列操作e
[题目描述] 一个长度为n的序列,一开始序列数的权值都是0,有m次操作 支持两种操作, 1 L R x,给区间[L,R]内,第一个数加x,第二个数加2^2⋅x,第三个数加3^2⋅x...第R-L+1个 ...
- 2018.08.04 cogs2633. [HZOI 2016]数列操作e(线段树)
传送门 支持区间加w(i−ql+1)2" role="presentation" style="position: relative;">w(i ...
- 2018.07.30 cogs2632. [HZOI 2016] 数列操作d(线段树)
传送门 线段树基本操作 区间加等差数列,维护区间和. 对于每个区间维护等差数列首项和公差,易证这两个东西都是可合并的,然后使用小学奥数的知识就可以切掉这题. 代码: #include<bits/ ...
- COGS 2416.[HZOI 2016]公路修建 & COGS 2419.[HZOI 2016]公路修建2 题解
大意: [HZOI 2016]公路修建 给定一个有n个点和m-1组边的无向连通图,其中每组边都包含一条一级边和一条二级边(连接的顶点相同),同一组边中的一级边权值一定大于等于二级边,另外给出一个数k( ...
- cogs——2478. [HZOI 2016]简单的最近公共祖先
2478. [HZOI 2016]简单的最近公共祖先 ★☆ 输入文件:easy_LCA.in 输出文件:easy_LCA.out 简单对比时间限制:2 s 内存限制:128 MB [题 ...
- COGS 2199. [HZOI 2016] 活动投票
2199. [HZOI 2016] 活动投票 ★★ 输入文件:hztp.in 输出文件:hztp.out 简单对比时间限制:0.5 s 内存限制:2 MB [题目描述] 衡中活动很多, ...
- COGS 2485. [HZOI 2016]从零开始的序列
2485. [HZOI 2016]从零开始的序列 ★★ 输入文件:sky_seq.in 输出文件:sky_seq.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] ...
- COGS 2334. [HZOI 2016]最小函数值
时间限制:1 s 内存限制:128 MB [题目描述] 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Aix2+Bix+Ci(x∈N∗).给定这些Ai.Bi和Ci,请求出所有函数的所 ...
- cogs——2419. [HZOI 2016]公路修建2
2419. [HZOI 2016]公路修建2 ★☆ 输入文件:hzoi_road2.in 输出文件:hzoi_road2.out 简单对比时间限制:1 s 内存限制:128 MB [题 ...
随机推荐
- webpack学习(五)entry和output的基础配置
1:entry和output就是打包的入口和出口的两个对象.但是如果入口文件就一个的话(应该说只希望打包出一个脚本文件), entry直接跟一个字符串(入口文件路径)就可以了.如:entry : &q ...
- pip安装python包时报字符编码错
比如安装scikit-learn时报错: django ascii’ codec can’t encode character 原因是用户目录或用户名存在中文,ascii不能解码,解决办法是在Pyth ...
- JavaMail转发邮件
最近要做一个邮件转发功能,看了好多blog,都是接受邮件,再解析邮件内容,再组装成新的邮件发出! 我按照这个不够,不错!邮件发出去了.但是好麻烦啊,接受邮件是个Message,发送邮件也是个Messa ...
- ZOJ 1276 "Optimal Array Multiplication Sequence"(最优矩阵链乘问题+区间DP)
传送门 •题意 矩阵 A(n×m) 和矩阵 B(m×k) 相乘,共做 n×m×k 次乘法运算: 给你 n 个矩阵,求这 n 个矩阵的最优结合方式,使得做的总乘法运算次数最少: •题解 定义dp(i,j ...
- PHP性能监控
使用xhprof进行线上PHP性能追踪及分析 日志未经声明,均为AlloVince原创.版权采用『 知识共享署名-非商业性使用 2.5 许可协议』进行许可. 之前一直使用基于Xdebug进行PHP的性 ...
- H3C生成树协议
- C# 程序集数量对软件启动性能的影响
本文通过很多的数据测试分析在一个项目引用很多个外部项目和将外部项目的类合并到一个项目之间的启动性能的不同. 通过分析知道了如果一个项目引用了很多项目,而且在启动过程会全部调用这些项目,这时的软件性能会 ...
- Vue 扩展插件
- P3810 陌上花开 CDQ分治
陌上花开 CDQ分治 传送门:https://www.luogu.org/problemnew/show/P3810 题意: \[ 有n 个元素,第 i 个元素有 a_i. b_i. c_i 三个属性 ...
- 苹果IOS 证书申请及导出证书文件
在申请证书之前,前提是,你要注册一个苹果帐号,且交了个人或公司帐号99美元大概人民币600多一年费用申请开发者帐号,审核通过的开发者帐号,个人或公司或企业类型帐号. 如何申请苹果开发者帐号,这里不讲解 ...