单调队列、斜率优化
lemondinosaur
转圈圈 不停转圈圈 然后摔倒
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
NOIP2018普及组解题报告
解题报告洛谷 5015 标题统计代码(题目过水)洛谷 5016 龙虎斗分析代码洛谷 5017 摆渡车分析(线性dp)代码(线性dp)分析(斜率优化)代码(斜率优化)洛谷 5018 对称二叉树分析代码后续 凉凉记 洛谷 5015 标题统计 代码(题目过水) #include <cstdio> #include <cctype> using namespace std; int...原创 2018-12-13 17:58:50 · 1109 阅读 · 0 评论 -
#单调队列,动态规划#codevs 2417 codevs 3359 洛谷 2569 jzoj 1593 股票交易
题目 分析 代码 #include &lt;cstdio&gt; #include &lt;cstring&gt; using namespace std; int n,maxp,w,ap[2001],bp[2001],as[2001],bs[2001],f[2001][2001],q[2001]; int in(){ int ans=0; char c=getcha...原创 2018-08-15 17:19:15 · 232 阅读 · 0 评论 -
#单调队列,动态规划#poj 2373 Dividing the Path
题目 FJ有一些喷头,半径最短是lminlminlmin,最长是lmaxlmaxlmax,要求每个点只能被一个喷头浇灌,有些连续区间只能被同一个喷头浇灌,问能否满足要求,如果能,最少需要多少个喷头 分析 首先这是一个动态规划,可得f[i]=min(f[j]+1)|1<j<if[i]=min(f[j]+1)|1<j<if[i]=\min(f[j]+1)|1iii...原创 2018-08-15 15:27:29 · 207 阅读 · 0 评论 -
#单调队列,环形dp#CH 5501 环路运输
题目 编号为iii的仓库与编号为jjj的仓库之间的距离定义为 dist(i,j)=min(|i−j|,N−|i−j|)dist(i,j)=min(|i−j|,N−|i−j|)dist(i,j)=min(|i-j|,N-|i-j|),编号为iii的仓库库存量为AiAiA_i。在iii和jjj两座仓库之间运送货物需要的代价为Ai+Aj+dist(i,j)Ai+Aj+dist(i,j)A_i+A_...原创 2018-08-20 15:48:17 · 278 阅读 · 0 评论 -
#斜率优化,单调队列,动态规划#loj 10187 洛谷 CF311B Cats Transport
题目 有MMM只猫,雇了PPP位饲养员。路边有NNN座山,从111到NNN编号。第iii座山与第i−1i−1i−1座山之间的距离是DiDiD_i 。饲养员都住在111号山上。第iii只猫去HiHiH_i号山玩,玩到时刻TiTiT_i停止,然后在原地等饲养员来接。饲养员们必须回收所有的猫。每个饲养员沿着路从111号山走到NNN号山,把各座山上已经在等待的猫全部接走。饲养员在路上行走需要时间,速度...原创 2018-08-22 20:01:17 · 296 阅读 · 0 评论 -
#斜率优化,单调队列,动态规划,二分#bzoj 2726 任务安排3
题目 参考任务安排1和任务安排2,还有一点−512&lt;T[i]&lt;512−512&lt;T[i]&lt;512-512TTT的值改变了,所以S+SUMT[I]S+SUMT[I]S+SUMT[I]就不再具有单调性,所以必须得用二分求出最优解 代码 #include &lt;cstdio&gt; typedef long long ll; int n,s,q[300001]原创 2018-08-22 18:54:37 · 384 阅读 · 0 评论 -
#斜率优化,单调队列,动态规划#poj 1180 codevs 2212 洛谷 2365 loj 10185 任务安排
PS:CH 5A01 题目 机器上有N个需要处理的任务,这些任务被标号为1到N,顺序不能变。这N个任务被分成若干批,每批包含相邻的若干任务。从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时间是Ti。在每批任务开始前,机器需要启动时间S,而完成这批任务所需的时间是各个任务需要时间的总和。注意,同一批任务将在同一时刻完成。每个任务的费用是它的完成时刻乘以一个费用系数Fi。请确定一个...原创 2018-08-22 17:06:07 · 296 阅读 · 0 评论 -
2019.04.13【NOIP提高组】模拟 A 组
解题报告前言JZOJ 3169 生产汽车题目分析代码JZOJ 3170 挑选玩具题目分析代码JZOJ 3171 洛谷 4594 重心[题目](https://www.luogu.org/problemnew/show/P4594)[分析+代码](https://www.luogu.org/paste/cwuaw5vf) 前言 水分警告 JZOJ 3169 生产汽车 题目 nnn个工人,mmm辆汽...原创 2019-04-17 17:36:33 · 384 阅读 · 0 评论 -
#单调队列,树的直径#bzoj 1999 洛谷 1099 树网的核
洛谷链接 bzoj链接 分析 首先两遍bfs求出树的直径,预处理对于每个点的最大偏心距,枚举直径上的左端点lll,那么对于右端点rrr,答案就是max(max(mxii∈[l∼r]),max(dis[r]−dis[s],dis[t]−dis[l]))max(max(mx_i i\in[l\sim r]),max(dis[r]-dis[s],dis[t]-dis[l]))max(max(mxii...原创 2019-06-01 13:44:09 · 164 阅读 · 0 评论 -
#基环树,单调队列#洛谷 4381 BZOJ 1791 JZOJ 2304 Island
题目 分析 这道题也就是求各棵基环树的直径之和,那么可能在去掉环的某棵子树里,或是经过环,其两端分别在去掉环上所有边之后的两棵不同子树中。首先在基环树中断环求最大的树的直径,就可以解决第一个情况,其次,可以用单调队列实现第二种情况,把环上的点复制一份做dp,就可以解决问题 代码 #include <cstdio> #include <cctype> #include &...原创 2019-08-05 20:24:46 · 223 阅读 · 0 评论 -
2019.07.11【NOIP提高组】模拟 B 组
解题报告洛谷 3084 照片 Photo题目分析代码洛谷 3085 阴和阳 Yin and Yang题目分析代码洛谷 3086 数字8 Figure Eight题目分析代码 洛谷 3084 照片 Photo 题目 在长度为nnn的线段中给出若干个区间,询问是否存在一种情况使最多的点在每个区间中有且仅出现一次 分析 设dp[i]dp[i]dp[i]表示前iii个点第iii个点必选所能产生的最多的点...原创 2019-08-19 19:20:55 · 414 阅读 · 0 评论 -
#斜率优化#JZOJ 3655 BZOJ 3675 洛谷 3648 序列分割
题目 分析 那么朴素的dp方程设dp[i][k]dp[i][k]dp[i][k]表示前iii个数分割kkk次的最大得分 dp[i][k]=max{dp[j][k−1]+sumj∗(sumi−sumj)}dp[i][k]=\max \{dp[j][k-1]+sum_j*(sum_i-sum_j)\}dp[i][k]=max{dp[j][k−1]+sumj∗(sumi−sumj)} 首先第二...原创 2019-08-23 08:51:56 · 220 阅读 · 0 评论 -
#斜率优化#JZOJ 2204 洛谷 2900 BZOJ 1597 土地购买
题目 分析 首先把宽度lll按第一关键字从小到大排序,高度hhh按第二关键字从大到小排序,用一个栈把存在h[x]≤h[y],l[x]≤l[y]h[x]\leq h[y],l[x]\leq l[y]h[x]≤h[y],l[x]≤l[y]的情况消掉,然后一个显然的性质可以发现最优情况肯定是选择连续的一段,那么可以这样列出dp方程 dp[i]=min{dp[j]+h[j+1]∗l[i]}dp[i]=...原创 2019-08-23 09:04:36 · 185 阅读 · 0 评论 -
#斜率优化,单调队列#洛谷 2120 BZOJ 1096 仓库建设
not ending 题目 分析 代码 #include <cstdio> #include <cctype> #define rr register using namespace std; const int N=1000001; int n,dis[N],q[N],c[N]; long long sum[N],s[N],dp[N]; inline signed i...原创 2019-08-23 09:07:49 · 173 阅读 · 0 评论 -
#单调队列#洛谷 2698 [USACO12MAR]花盆Flowerpot
题目 给出N滴水的坐标(X,Y),y表示水滴的高度,x表示它下落到x轴的位置。每滴水每秒从(x,y)到(x,y-1)。你需要把花盆放在x轴上的某个位置,使得从开始接水到水滴完之间的时间差至少为D,只要水滴落到x轴上,与花盆的边沿对齐,就认为被接住,求最小的花盆的宽度W。 分析 单调队列,维护一个滑动窗口,同时用两个单调队列维护滑动窗口的最大值和最小值,存位置 首先出队挺简单的 w...原创 2018-07-06 21:33:55 · 311 阅读 · 0 评论 -
#单调队列,平衡树#poj 3017 Cut the Sequence
题目 把一个长度为nnn的数列分成若干段,使每段的总和不超过mmm,并且每段的最大值和最小 分析 按照朴素的方法,那么f[i]=min0≤j<i(∑ik=j+1Ak≤m){f[j]+maxj<k≤i{a[k]}}f[i]=min0≤j<i(∑k=j+1iAk≤m){f[j]+maxj<k≤i{a[k]}}f[i]=min_{0\leq jAjAjA_j队列,那...原创 2018-08-28 12:01:08 · 227 阅读 · 0 评论 -
#单调队列,动态规划,斜率优化#hdu 3507 Print Article
题目 一篇文章在打印k个需花费 m是常数,问最少花费多少就可以打完一篇文章 分析 对于x1<xx1<xx1x2<xx2<xx2dp[x]=dp[x1]+(sum[x]−sum[x1−1])2+mdp[x]=dp[x1]+(sum[x]−sum[x1−1])2+mdp[x]=dp[x1]+(sum[x]-sum[x1-1])^2+m dp[x]=dp[x2]...原创 2018-08-17 21:35:21 · 236 阅读 · 0 评论 -
#单调队列,树形dp#ssl 2443 2570 bzoj 2500 幸福的道路
题目 求 分析 代码 #include &amp;lt;cstdio&amp;gt; #define N 1000001 struct node{int y,w,next;}e[N]; struct rec{int w,num;}d1[N],d2[N]; int ls[N],n,m,q1[N],q2[N]; int in(){ int ans=0; char c=getchar(...原创 2018-08-17 16:56:45 · 301 阅读 · 0 评论 -
#单调队列#洛谷 1090 SSL 1040 VIJOS 1097 CODEVS 1063 合并果子
题目及O(nlog2nnlog2nnlog_2n)做法 分析 其实我们也可以用O(n)来做,首先来个桶排。 再用一个单调队列存下两个最小值,不断更新。 代码 #include &lt;cstdio&gt; #include &lt;cctype&gt; using namespace std; short t[20001],l,r,min[2],n,head; int a...原创 2018-04-21 16:27:26 · 218 阅读 · 0 评论 -
#单调队列#ssl 2521 数数
分析 (n3n3n^3)——暴力、(n2n2n^2)——前缀和都会超时,所以想到了单调队列,维护单调递增,固定右端点,然后左端点往后推,轻松O(n)。 代码 #include &amp;lt;cstdio&amp;gt; #include &amp;lt;cctype&amp;gt; using namespace std; int n,m; long long ans,q[100001],s[100001];.原创 2018-06-20 20:51:04 · 187 阅读 · 0 评论 -
#单调队列,动态规划#poj 1821 fence
题目 有n块木板,m个工匠将其进行粉刷,木板至多被粉刷一次,工匠要么不粉刷,要么粉刷包含木板SiSiS_i的、长度不超过LiLiL_i的连续的一段木板,每粉刷一块可得PiPiP_i的报酬。求最大的总报酬。 分析 先把SiSiS_i排序,可以按顺序dp,设f[i][j]f[i][j]f[i][j]表示前i个工匠粉刷前j块木板(可以不刷)最大的总报酬。 1. 第i个工匠什么也不刷,f...原创 2018-07-10 19:51:48 · 273 阅读 · 0 评论 -
JZOJ 1326 洛谷 1886 POJ 2823 Window 滑动窗口
题目 在滑动的区间中寻找最大值和最小值。 分析 对于任意的l≤i≤j≤rl≤i≤j≤rl\leq i\leq j \leq r滑动窗口的时候,aiaia_i比ajaja_j先失效,明显与单调队列相吻合,于是一种算法就想出来了,当把区间(l,r)(l,r)(l,r)移动到(l+1,r+1)(l+1,r+1)(l+1,r+1)时,若队首不在(l+1,r+1)(l+1,r+1)(l+1,r...原创 2018-07-10 08:00:40 · 218 阅读 · 0 评论 -
2018.07.17【2018提高组】模拟C组
前言:OTL。。。 题目 JZOJ 1264 乱头发节 题目 求一头牛到后面第一头不低于该牛身高的牛之间的牛的数量(不包括两头牛,如果没有不低于的,就当做最后有一头无限高的牛) 分析 单调栈!如果不想开long long,那就用unsigned 代码 #include &amp;amp;lt;cstdio&amp;amp;gt; #include &amp;amp;lt;ccty原创 2018-07-17 14:40:20 · 258 阅读 · 0 评论 -
#斜率优化,单调队列,动态规划#洛谷 4072 JZOJ 4475 征途
题目 把一个长度为nnn的序列分成mmm份,使它的方差最小 分析 首先要剖析方差公式,设sum[m]=∑i=1ma[i]sum[m]=\sum_{i=1}^ma[i]sum[m]=∑i=1ma[i] S2m2=m∑i=1m(a[i]−ave)2S^2m^2=m\sum_{i=1}^m(a[i]-ave)^2S2m2=mi=1∑m(a[i]−ave)2 那么 S2m2=m∑i=1m(a[i])...原创 2019-01-22 09:22:16 · 358 阅读 · 2 评论 -
#单调队列#洛谷 2219 修筑绿化带
题目链接 分析 那么这道题首先处理出大矩形和小矩形的前缀和,然后用单调队列维护以(i,j−B+1+D∼j−1)(i, j-B+1+D\sim j-1)(i,j−B+1+D∼j−1)为右下角的花坛肥沃度的最小值,再用一次单调队列维护以(i−A+1+C∼i−1,j−B+1+D∼j−1)(i-A+1+C\sim i-1, j-B+1+D\sim j-1)(i−A+1+C∼i−1,j−B+1+D∼j−1)...原创 2018-12-15 17:05:16 · 213 阅读 · 0 评论 -
#斜率优化,动态规划#jzoj 2318 洛谷 3628 bzoj 1911 特别行动队
洛谷链接 分析 首先给出朴素的方程(s[i]=∑j=1ix[j]s[i]=\sum_{j=1}^{i}x[j]s[i]=∑j=1ix[j]) dp[i]=min{dp[j]+a(s[i]−s[j])2+b(s[i]−s[j])+c}dp[i]=min\{dp[j]+a(s[i]-s[j])^2+b(s[i]-s[j])+c\}dp[i]=min{dp[j]+a(s[i]−s[j])2+b(s[...原创 2018-12-20 17:28:41 · 291 阅读 · 0 评论 -
#斜率优化,动态规划#bzoj 1010 洛谷 3195 玩具装箱TOY
洛谷题目链接 bzoj题目链接 分析 根据题目,我们可以写出朴素的状态转移方程 dp[i]=min{dp[j]+(j−i−1+∑k=jic[k]−L)2}dp[i]=min\{dp[j]+(j-i-1+\sum_{k=j}^ic[k]-L)^2\}dp[i]=min{dp[j]+(j−i−1+k=j∑ic[k]−L)2} 预处理ccc的前缀和sumsumsum,并使sum[i]加上isum[i...原创 2018-12-19 18:26:29 · 192 阅读 · 2 评论 -
#斜率优化,单调队列,动态规划#bzoj 2684 洛谷 4360 锯木场选址
题目链接 分析 设dp[i]dp[i]dp[i]表示第二个锯木场修到第i个位置 那么状态转移方程是dp[i]=min(tot−dis[j](从j到n的距离)(后缀和)∗(∑k=1jw[k](前缀和))−dis[i]∗(∑k=j+1iw[k]))(j&amp;amp;lt;i)dp[i]=min(tot-dis[j](从j到n的距离)(后缀和)*(\sum_{k=1}^{j}w[k](前缀和))-dis[i...原创 2018-11-28 18:29:10 · 237 阅读 · 0 评论 -
2018.12.30【NOIP提高组】模拟A组
前言 去上海了,所以没有比赛,不过还是看了题目 JZOJ 5353 村通网 题目 一座建筑有网,当且仅当满足以下至少一个条件: 1、直接连网,花费为AAA。 2、连接有网的建筑,花费为BBB×两者曼哈顿距离。 有NNN座建筑,知道所有建筑的坐标,问最少要多少费用才能达到目的。 分析 那么这道题就是一道比较裸的最小生成树,由于任意点间都能连边,所以说kruskal没有什么大优势,在此用的是裸的p...原创 2019-01-05 14:40:47 · 214 阅读 · 0 评论 -
2019.08.17【NOIP提高组】模拟 A 组
解题报告前言JZOJ 6290 倾斜的线题目分析代码JZOJ 6305 最小值题目分析代码JZOJ 6307 安排题目分析代码 前言 毒瘤出题人 JZOJ 6290 倾斜的线 题目 分析 考虑按照这些点与斜率p/qp/qp/q的截距从小到大排序,那么可以证明相邻两个点更接近斜率,然后暴力求解,时间复杂度O(nlogn)O(nlogn)O(nlogn) 代码 #include <cst...原创 2019-08-17 20:08:45 · 311 阅读 · 1 评论
分享