HFUUOJ1024 动态开点线段树+标记永久化
题意

分析
动态加点线段树,标记永久化好写常数小
Code
#include<bits/stdc++.h>
#define fi first
#define se second
#define lson l,mid,p<<1
#define rson mid+1,r,p<<1|1
#define pb push_back
#define ll long long
using namespace std;
const ll inf=1e18;
const int mod=1e9+7;
const int maxn=1e7+10;
int n,m;
ll tr[maxn];
int ls[maxn],rs[maxn],tag[maxn],tot;
int rt;
void up(ll x,ll y,ll l,ll r,int &p,ll k){
	tr[++tot]=(tr[p]+(y-x+1)%mod*k%mod)%mod;
	ls[tot]=ls[p],rs[tot]=rs[p],tag[tot]=tag[p],p=tot;
	if(x==l&&y==r){
		tag[p]=(tag[p]+k)%mod;
		return;
	}ll mid=l+r>>1;
	if(y<=mid) up(x,y,l,mid,ls[p],k);
	else if(x>mid) up(x,y,mid+1,r,rs[p],k);
	else up(x,mid,l,mid,ls[p],k),up(mid+1,y,mid+1,r,rs[p],k);
}
ll qy(ll x,ll y,ll l,ll r,int p,ll k){
	if(x==l&&y==r){
		return (tr[p]+(y-x+1)%mod*k%mod)%mod;
	}ll mid=l+r>>1;
	if(y<=mid) return qy(x,y,l,mid,ls[p],(k+tag[p])%mod);
	else if(x>mid) return qy(x,y,mid+1,r,rs[p],(k+tag[p])%mod);
	else return (qy(x,mid,l,mid,ls[p],(k+tag[p])%mod)+qy(mid+1,y,mid+1,r,rs[p],(k+tag[p])%mod))%mod;
}
int main(){
	//ios::sync_with_stdio(false);
	//freopen("in","r",stdin);
	cin>>m;
	for(int i=1,op;i<=m;i++){
		ll x,l,r;scanf("%d%lld%lld",&op,&l,&r);
		if(op==1){
			scanf("%lld",&x);
			x%=mod;
			up(l,r,1,inf,rt,x);
		}else{
			printf("%lld\n",qy(l,r,1,inf,rt,0));
		}
	}
	return 0;
}
												
											HFUUOJ1024 动态开点线段树+标记永久化的更多相关文章
- 【BZOJ-4636】蒟蒻的数列     动态开点线段树  ||(离散化) + 标记永久化
		
4636: 蒟蒻的数列 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 247 Solved: 113[Submit][Status][Discuss ...
 - Codeforces 258E - Little Elephant and Tree(根号暴力/线段树+标记永久化/主席树+标记永久化/普通线段树/可撤销线段树,hot tea)
		
Codeforces 题目传送门 & 洛谷题目传送门 yyq:"hot tea 不常有,做过了就不能再错过了" 似乎这是半年前某场 hb 模拟赛的 T2?当时 ycx.ym ...
 - BZOJ4636: 蒟蒻的数列(动态开节点线段树)
		
题意 题目链接 Sol 直接上动态开节点线段树 因为只有一次询问,所以中途不需要下传标记 #include<bits/stdc++.h> #define LL long long usin ...
 - [Vani有约会]雨天的尾巴——树上差分+动态开点线段树合并
		
题目描述 首先村落里的一共有n座房屋,并形成一个树状结构.然后救济粮分m次发放,每次选择两个房屋(x,y),然后对于x到y的路径上(含x和y)每座房子里发放一袋z类型的救济粮. 然后深绘里想知道,当所 ...
 - BZOJ4785 [Zjoi2017]树状数组  【二维线段树 + 标记永久化】
		
题目链接 BZOJ4785 题解 肝了一个下午QAQ没写过二维线段树还是很难受 首先题目中的树状数组实际维护的是后缀和,这一点凭分析或经验或手模观察可以得出 在\(\mod 2\)意义下,我们实际求出 ...
 - HDU 6183 Color it(动态开点线段树)
		
题目原网址:http://acm.hdu.edu.cn/showproblem.php?pid=6183 题目中文翻译: Time Limit: 20000/10000 MS (Java/Others ...
 - Codeforces 803G Periodic RMQ Problem ST表+动态开节点线段树
		
思路: (我也不知道这是不是正解) ST表预处理出来原数列的两点之间的min 再搞一个动态开节点线段树 节点记录ans 和标记 lazy=-1 当前节点的ans可用 lazy=0 没被覆盖过 els ...
 - CodeForces - 915E  动态开点线段树
		
题目 晚上有n个亮着的灯泡,标号从1到n. 现在存在2种操作,如下: 操作1,关掉标号 [l,r] 区间的灯 操作2,打开标号 [l,r] 区间的灯 下面有q次询问,每次询问执行其中一种操作,询问格式 ...
 - [2016湖南长沙培训Day4][前鬼后鬼的守护 chen] (动态开点线段树+中位数 or 动规 or 贪心+堆优化)
		
题目大意 给定一个长度为n的正整数序列,令修改一个数的代价为修改前后两个数的绝对值之差,求用最小代价将序列转换为不减序列. 其中,n满足小于500000,序列中的正整数小于10^9 题解(引自mzx神 ...
 
随机推荐
- S02_CH03_EMIO实验Enter a post title
			
S02_CH03_EMIO实验 3.1 EMIO 和MIO的对比介绍 上次讲到MIO的使用,初步熟悉了EDK的使用,这次就来说说EMIO的使用.如你所见zynq的GPIO,分为两种,MIO(multi ...
 - IoC框架介绍
			
转载自:http://blog.csdn.net/wanghao72214/article/details/3969594 1 IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中, ...
 - TimeUtil 工具类
			
/** * TODO * * @auther xh * @date 6/11/19 3:32 PM */ public class TimeUtil { public static final Str ...
 - mysql启动失败“MySQL Daemon failed to start”
			
CentOS上,用命令:service mysqld restart 启动mysql报错: # service mysqld restart Stopping mysqld: [ OK ] MySQL ...
 - 使用iframe框架时,实现子页面内跳转到整个页面,而不是在子页面内跳转
			
首先先来描述一下我所遇到的问题,我在一个首页的index.jsp页面中用到了iframe框架,见下图 在iframe中引入jsp页面的路径,是几个iframe框架组合成的一个完整的页面,但是他们的存在 ...
 - Linux搭建.net core CI/CD环境
			
一.简介 微服务开发中自动化.持续化工程十分重要,在成熟的CI/CD环境中项目团队可以灵活分配,大大提供团队效率.如果还不了解什么是CI/CD,可以先查看相关文章,这里主要介绍环境的搭建,相关原理就不 ...
 - Pycharm Community 配置 Django 开发环境
			
1. 安装数据库可视化工具 Database Navigator 2. 括号匹配高亮工具 HighlightBracketPair (...) Web 开发放弃 Pycharm Community 版 ...
 - Repeater POJ - 3768 (分形)
			
Repeater POJ - 3768 Harmony is indispensible in our daily life and no one can live without it----may ...
 - Derby 数据库 客户端 ij使用
			
Derby是开源的.嵌入式的Java数据库程序,ij是Derby提供的客户端工具,相当于其他数据库提供的sqlplus工具. ij是纯Java的程序,不用安装,使用起来就像运行普通的Java应用程序一 ...
 - python+Appium自动化:屏幕截图
			
屏幕截图 主要是为了程序出现错误时,开发除了可以分析日志之外,还可以进行截图更好地去定位问题. 截图一般有两种方法: 第一种save_screenshot(self,filename) driver. ...