P4513 小白逛公园】的更多相关文章

P4513 小白逛公园 题目背景 小新经常陪小白去公园玩,也就是所谓的遛狗啦… 题目描述 在小新家附近有一条“公园路”,路的一边从南到北依次排着nn个公园,小白早就看花了眼,自己也不清楚该去哪些公园玩了. 一开始,小白就根据公园的风景给每个公园打了分-.-.小新为了省事,每次遛狗的时候都会事先规定一个范围,小白只可以选择第aa个和第bb个公园之间(包括aa.bb两个公园)选择连续的一些公园玩.小白当然希望选出的公园的分数总和尽量高咯.同时,由于一些公园的景观会有所改变,所以,小白的打分也可能会有…
题面:小白逛公园 题解: 对于线段树的每个节点除了普通线段树该维护的东西以外,额外维护lsum(与左端点相连的最大连续区间和).rsum(同理)和sum……就行了 代码: #include<cstdio> #include<cstring> #include<iostream> #define max(a,b) ((a)>(b)?(a):(b)) using namespace std; inline int rd(){ ,f=;char c=getchar();…
题目背景 小新经常陪小白去公园玩,也就是所谓的遛狗啦… 题目描述 在小新家附近有一条“公园路”,路的一边从南到北依次排着 nnn 个公园,小白早就看花了眼,自己也不清楚该去哪些公园玩了. 一开始,小白就根据公园的风景给每个公园打了分-.-.小新为了省事,每次遛狗的时候都会事先规定一个范围,小白只可以选择第 aaa 个和第 bbb 个公园之间(包括 aaa . bbb 两个公园)选择连续的一些公园玩.小白当然希望选出的公园的分数总和尽量高咯.同时,由于一些公园的景观会有所改变,所以,小白的打分也可…
链接:https://www.luogu.org/problemnew/show/P4513 思路: 很基础的区间合并,开四个数组: num: 区间数字的和 lsum:从左端点起最大连续字段和 rsum:从右端点起最大连续字段和 sum:区间最大连续字段和 然后按照以前合并的思路合并下就完事了. 好久没写区间合并的题..还被卡了一阵子,属实弟弟 实现代码; #include<bits/stdc++.h> using namespace std; #define lson l,mid,rt<…
题目链接:https://www.luogu.org/problem/P4513 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; #define maxn 500005 #define ll long long #define ls l,mid,rt<<1 #define rs mid+1,r,rt<<1|1 struct node{ ll…
区间最大子段和模板题.. 维护四个数组:prefix, suffix, sum, tree 假设当前访问节点为cur prefix[cur]=max(prefix[lson],sum[lson]+preifx[rson]) suffix[cur]=max(suffix[rson],sum[rson]+suffix[lson]) sum[cur]=sum[lson]+sum[rson] tree[cur]=max(tree[lson], tree[rson], suffix[lson]+suffi…
传送门 线段树常规操作了解一下. 单点修改维护区间最大连续和. 对于一个区间,维护区间从左端点开始的连续最大和,从右端点开始的连续最大和,整个区间最大和,区间和. 代码如下: #include<bits/stdc++.h> #define N 500005 #define lc (p<<1) #define rc (p<<1|1) #define mid (T[p].l+T[p].r>>1) using namespace std; struct Node{…
题目链接 Solution 线段树是一门比较刁钻的手艺... 此题我们需要维护 \(4\) 个变量: \(amx\) 代表当前节点的最大值. \(lmx\) 代表当前节点以左端点为起点的区间最大值. \(rmx\) 代表当前节点以右端点为结尾的区间最大值. \(sum\) 代表整段的和. 然后我们在 \(push\)_\(up\) 的时候,也是要做蛮多工作. \(lc\) 为左端点,\(rc\) 为右端点. \(lmx=max(lmx_{lc},sum_{lc}+lmx_{rc})\) 也就是说…
这道题看起来像是线段树和最大子段和的结合,但这里求最大子段和不用dp,充分利用线段树递归的优势来处理.个人理解:线段树相当于把求整个区间的最大子段和的问题不断划分为很多个小问题,容易解决小问题,然后递归处理较大的问题(分治),所以这就可以用来解决. 在线段树中,除了左端点,右端点,新开4个域--ans,ml,mr,sum,其中sum为该区间的和,ans为该区间上的最大子段和,ml为必须包含左端点(以左端点为头)的最大子段和,mr为必须包含右端点(以右端点为尾)的最大子段和. 更新操作在up()中…
不知怎地竟有种错觉此题最近做过= =目测是类似的?那道题貌似是纯动归? 本来今晚想做两道题的,一道是本题,一道是P1653疯狂的方格取数或NOI08 Employee,看看现在的时间目测这个目标又达不成了. 不过至少还是有收获的,虽然现在越来越觉得我做题的时间难以估摸了. 本来纯粹是以复习线段树(喂喂你本来就没码过几遍!)的心态来做这道题的,现在发现(1)我的基础好糟糕(2)这题其实不简单! 至今觉得我不用build_tree,直接维护树导致过程的参变很多这事儿有点麻烦,写个过程要传这么多变量,…