【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是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...
随机推荐
- JAVAEE——BOS物流项目09:业务受理需求分析、创建表、实现自动分单、数据表格编辑功能使用方法和工作单快速录入
1 学习计划 1.业务受理需求分析 n 业务通知单 n 工单 n 工作单 2.创建业务受理环节的数据表 n 业务通知单 n 工单 n 工作单 3.实现业务受理自动分单 n 在CRM服务端扩展方法根据手 ...
- js 防止重复点击
1.添加flag 适用于ajax 表单提交,提交之前flag = false , 提及中,true ,提交后false 2.事件重复点击: <script> var throttle = ...
- react-native-image-picker 运用launchCamera直接调取摄像头的缺陷及修复
在前几天用react-native进行android版本开发当中,用到了"react-native-image-picker"的插件:根据业务的需求:点击按钮-->直接调取摄 ...
- 深入理解JavaScript的this指向问题
Javascript的this用法 this是Javascript语言的一个关键字.它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如: function test(){ this.x ...
- uvalive 5834 Genghis Khan The Conqueror
题意: 给出一个图,边是有向的,现在给出一些边的变化的信息(权值大于原本的),问经过这些变换后,MST总权值的期望,假设每次变换的概率是相等的. 思路: 每次变换的概率相等,那么就是求算术平均. 首先 ...
- The first week CorelDRAW 课总结:
1.这节课学到了什么知识? 答:(1)认识了CorelDRAW X4的工作界面(由标题栏 菜单栏 工具栏 属性栏 工具箱 页面控制栏 状态栏 绘图区和调色板组成): (2)CorelDRAW X4的基 ...
- hue集成hive访问报database is locked
这个问题这应该是hue默认的SQLite数据库出现错误,你可以使用mysql postgresql等来替换 hue默认使用sqlite作为元数据库,不推荐在生产环境中使用.会经常出现database ...
- TCP/IP学习笔记(二):TCP连接的建立与终止
TCP连接的三次握手: (1)请求短发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号ISN(1415535521),报文段中SYN=1:TCP规定:SYN报文段不能携带数据,但是要消耗一个 ...
- linux实现文件的去重【转】
(1)两个文件的交集,并集 1. 取出两个文件的并集(重复的行只保留一份) cat file1 file2 | sort | uniq > file3 2. 取出两个文件的交集(只留下同时存在于 ...
- 谁说深入浅出虚拟机难?现在我让他通俗易懂(JVM)
1:什么是JVM大家可以想想,JVM 是什么?JVM是用来干什么的?在这里我列出了三个概念,第一个是JVM,第二个是JDK,第三个是JRE.相信大家对这三个不会很陌生,相信你们都用过,但是,你们对这三 ...