【CodeVs 6128 Lence的方块们】
·希望除了内部人员以外能有人通过这道题,因为这是大米饼第一次改编的题
·我所见到的“本题原版”的题解也很少,搜索一下应该是: #include<stdio.h>
#include<algorithm>
#define go(i,a,b) for(int i=a;i<=b;i++)
;
struct Convey{int Lnum,Rnum,Lsum,Rsum;}__;
int n,m,sz,lch[N],rch[N],lsum[N],rsum[N],_;
int sum[N],lazy[N],lnum[N],rnum[N];
void build(int &u,int l,int r){
u=++sz;sum[u]=lsum[u]=rsum[u]=r-l+;if(l==r)return;
;build(lch[u],l,mid);build(rch[u],mid+,r);
}
void Down(int u){
lnum[lch[u]]+=lazy[u];rnum[lch[u]]+=lazy[u];
lnum[rch[u]]+=lazy[u];rnum[rch[u]]+=lazy[u];
lazy[lch[u]]+=lazy[u];lazy[rch[u]]+=lazy[u];lazy[u]=;
}
;
sum[u]=max(sum[lch[u]],sum[rch[u]]);
lnum[u]=lnum[lch[u]];lsum[u]=lsum[lch[u]];
rnum[u]=rnum[rch[u]];rsum[u]=rsum[rch[u]];
)lsum[u]+=lsum[rch[u]];
)rsum[u]+=rsum[lch[u]];
if(lnum[rch[u]]==rnum[lch[u]])sum[u]=max(sum[u],rsum[lch[u]]+lsum[rch[u]]);
}
void update(int u,int l,int r,int L,int R,int val){
if(l==L&&r==R){lnum[u]+=val;rnum[u]+=val;lazy[u]+=val;return;}
;
if(R<=mid)update(lch[u],l,mid,L,R,val);
,r,L,R,val);
else update(lch[u],l,mid,L,mid,val),
update(rch[u],mid+,r,mid+,R,val);Up(u,l,r);
}
int find(int u,int l,int r,int L,int R,Convey& car){
if(l==L&&r==R){car=(Convey){lnum[u],rnum[u],lsum[u],rsum[u]};return sum[u];}
;
if(R<=mid)return find(lch[u],l,mid,L,R,car);
,r,L,R,car);
else{Convey A,B;int ans;
ans=max(find(lch[u],l,mid,L,mid,A),find(rch[u],mid+,r,mid+,R,B));
car.Lnum=A.Lnum;car.Rnum=B.Rnum;car.Lsum=A.Lsum;car.Rsum=B.Rsum;
)car.Lsum+=B.Lsum;
)car.Rsum+=A.Rsum;
if(A.Rnum==B.Lnum)ans=max(ans,A.Rsum+B.Lsum);return ans;
}Up(u,l,r);
}
,n);
go(i,,m){int f,l,r,a,k,p;scanf("%d",&f);
if(!f){scanf("%d%d%d%d%d",&l,&r,&a,&k,&p);
>=l)update(,,n,l,p-,k);
<=r)update(,,n,p,r-,-k);
)update(,,n,l-,l-,a);
,,n,r,r,-(*p-l-r)*k-a);
}
+find(,,n,l,r-,__));
};}//Paul_Guderian
当黎明和落日的光影交错的时刻,我们纷纷逃出每一座尖叫的城市。———汪峰《信仰在空中飘扬》
【CodeVs 6128 Lence的方块们】的更多相关文章
- ●线段树题之wows
●模拟考试的一道似乎是学长出的题,还不错,挺考代码能力的.以此记录. ●题目以被上传(改了改说法),6128 Lence的方块们 ● (像手纸一样长的贴图……) ●题目大意: 有横向排布的n个点,每个 ...
- 2016. 4.10 NOI codevs 动态规划练习
1.codevs1040 统计单词个数 1040 统计单词个数 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 De ...
- codevs 3289 花匠
题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...
- codevs 1082 线段树练习 3(区间维护)
codevs 1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...
- codevs 1285 二叉查找树STL基本用法
C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...
- codevs 1576 最长上升子序列的线段树优化
题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...
- codevs 1080 线段树点修改
先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...
- codevs 1228 苹果树 树链剖分讲解
题目:codevs 1228 苹果树 链接:http://codevs.cn/problem/1228/ 看了这么多树链剖分的解释,几个小时后总算把树链剖分弄懂了. 树链剖分的功能:快速修改,查询树上 ...
- codevs 1082 线段树区间求和
codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...
随机推荐
- 20145237 《Java程序设计》第八周学习总结
20145237 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章 通用API 15.1 日志 日志API简介 • java.util.logging包提供了日志功能相关类与 ...
- 十、Python练习----基础搭建飞机大战
只是简单的学习了pygame,实现飞机的摧毁还需要多张图片的切换,和sprite(碰撞精灵),还有多种音效的添加(如背景音乐.摧毁特效).以后再深入学习我只是练习一下python. 一.搭建界面(基于 ...
- .Net Core MongoDB 简单操作。
一:MongoDB 简单操作类.这里引用了MongoDB.Driver. using MongoDB.Bson; using MongoDB.Driver; using System; using S ...
- Python设计TFTP客户端
#coding=utf-8 from socket import * from threading import Thread import struct def recvData(fileName, ...
- 【learning】多项式相关(求逆、开根、除法、取模)
(首先要%miskcoo,这位dalao写的博客(这里)实在是太强啦qwq大部分多项式相关的知识都是从这位dalao博客里面学的,下面这篇东西是自己对其博客学习后的一些总结和想法,大部分是按照其博客里 ...
- 分布式系统之消息中间件rabbitmq
分布式系统之消息中间件rabbitmq 博客分类: 感谢: 一般php 用rabbitmq java 用activemq http://spartan1.iteye.com/blog/11802 ...
- antd 主题色
如果是自己配置的reac项目,而非官方推荐的creat-react-app或者dva-cli等阿里自己开发的脚手架去引入antd,会有两个问题 第一,用babel-plugin-import设置sty ...
- MySQL基础操/下
MySQL基础操 一.自增补充 desc (表名)t1: 查看表格信息内容 表的信息 show create table t1(表名):也是查看信息,还不多是横向查看 show create tabl ...
- Android:触屏事件
Android触屏事件包含两种: 1)屏幕触屏事件:重写onTouchEvent(MotionEvent event): 2)控件触屏事件:给控件注册触屏事件,setOnTouchEventListe ...
- Centos MySQL数据库迁移详细步骤
其实迁移数据库,一般用sql文件就行,把A服务器数据库的表结构和数据等等导出,然后导入到B服务器数据库, 但是这次数据文件过大,大约有40个G,使用命令行导入,效果不是很好,经常在执行过程中报错.卡死 ...