Light OJ 1411 Rip Van Winkle`s Code 线段树成段更新

2020-12-13 04:36

阅读:544

标签:http   io   html   c++   htm   re   

题目来源:Light OJ 1411 Rip Van Winkle`s Code

题意:3中操作 1种查询 求区间和 其中每次可以把一段区间从左到右加上1,2,3,。。。或者从右到左加上。。。3,2,1 或者把某个区间的数都置为v

思路:我是加了6个域 

add是这段区间每个数都要加上add  add是这么来的 对与123456。。。这个等差数列 可能要分为2个区间 那么我就分成123和123 两个右边的等差数列每个数还应该加上3 所以右区间add加3

v是这个区间都要置为v 他的优先级最高 

b是代表这个区间有多少个递增的等差数列

c是代表这个区间有多少个递减的等差数列

sum是区间和 

f为真说明要执行C 因为v可以是正和负还可以是0


#include 
#include 
#include 
using namespace std;
const int maxn = 250010;
typedef long long LL;
struct node
{
	LL sum, add, v, b, c;
 	bool f;
}a[maxn> 1;
	build(l, m, rt>1));
		a[rt>1);
		a[rt>1));
	LL s2 = (k>>1);
	if(a[rt].b)
	{
		a[rt>1));
		a[rt>1);
		a[rt> 1;
	pushdown(rt, l, r);
	if(y  m)
	{
		update(x, y, m+1, r, rt> 1;
	LL ans = 0;
	if(y  m)
		ans += query(x, y, m+1, r, rt

Light OJ 1411 Rip Van Winkle`s Code 线段树成段更新,搜素材,soscw.com

Light OJ 1411 Rip Van Winkle`s Code 线段树成段更新

标签:http   io   html   c++   htm   re   

原文地址:http://blog.csdn.net/u011686226/article/details/37740813


评论


亲,登录后才可以留言!