P3195 [HNOI2008]玩具装箱TOY】的更多相关文章

P3195 [HNOI2008]玩具装箱TOY 设前缀和为$s[i]$ 那么显然可以得出方程 $f[i]=f[j]+(s[i]-s[j]+i-j-L-1)^{2}$ 换下顺序 $f[i]=f[j]+(s[i]+i-(s[j]+j+L+1))^{2}$ 为了处理方便,我们套路地设 $a[i]=s[i]+i$ $b[i]=s[i]+i+L+1$ 于是得出 $f[i]=f[j]+(a[i]-b[j])^{2}$ 拆开:$f[i]=f[j]+a[i]^{2}-2*a[i]*b[j]+b[j]^{2}$…
[luogu P3195] [HNOI2008]玩具装箱TOY 题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具,第i件玩具经过压缩后变成一维长度为Ci.为了方便整理,P教授要求在一个一维容器中的玩具编号是连续的.同时如果一个一维容器中有多个玩具,那么两件玩具之间要加入一个单位长度的填充物,形式地说如果将第i件玩具到第j个玩具放到一个容器中,那么容…
传送门:https://www.luogu.org/problem/P3195 题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为 1\cdots N1⋯N 的 NN 件玩具,第 ii 件玩具经过压缩后变成一维长度为 C_iCi​ .为了方便整理,P教授要求在一个一维容器中的玩具编号是连续的.同时如果一个一维容器中有多个玩具,那么两件玩具之间要加入一个单位长度的填充物,…
题目:https://www.luogu.org/problemnew/show/P3195 第一次用斜率优化...其实还是有点云里雾里的: 网上的题解都很详细,我的理解就是通过把式子变形,假定一个最优解,得到的是一条直线,斜率已知: 然后找到最接近这个最优斜率的点作为答案: 同时发现斜率单调递增,所以可以用单调队列: 代码是惊人地短呢: 还有一个问题,就是下面这篇代码中注释掉的那句会WA,可是我觉得它不过是把下面一句展开了而已啊? 代码如下: #include<iostream> #incl…
题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具,第i件玩具经过压缩后变成一维长度为Ci.为了方便整理,P教授要求在一个一维容器中的玩具编号是连续的.同时如果一个一维容器中有多个玩具,那么两件玩具之间要加入一个单位长度的填充物,形式地说如果将第i件玩具到第j个玩具放到一个容器中,那么容器的长度将为 x=j-i+Sigma(Ck) i<=K<=j…
列出DP方程式:设f[i]表示分组完前i件物品的最小花费,为方便计算,设sum[i]表示是前i件物品的长度和. f[i]=min(f[j]+(sum[i]-sum[j]+i-j-L-1)^2) [0<=j<i]求复杂度O(n)的解法 斜率优化入门题对于这类方程f(i)=a(i)*b(j)+a(i)+b(j)工具:构造直线,单调队列令a(i)=sum(i)+i, b(j)=sum(j)+j+L+1f(i)=f(j)+(a(i)-b(j))^2 =f(j)+a(i)^2-2*a(i)*b(j)+b…
题目大意:有n个物体,大小为$c_i$.把第i个到第j个放到一起,容器的长度为$x=j-i+\sum\limits_{k-i}^{j} c_k$,若长度为x,费用为$(x-L)^2$.费用最小. 题解: $$令:a_i=\sum\limits_{i=1}^{i} c_i$$ $$dp_i=min(dp_j+(a_i+i-a_j-j-L-1)^2)$$ $$(以下称两点斜率为 slope(A,B) )$$ $$令:b_j=a_i+i,d_i=b_i+i+L+1$$ $$\therefore dp_…
Code: #include<cstdio> #include<algorithm> using namespace std; const int maxn = 100000 + 123; long long s[maxn], f[maxn]; int l, n, q[maxn]; inline long long re_x(int i){ return s[i]; } inline long long re_y(int i){ return f[i] + (s[i] + l) *…
题意简述 有n个物体,第i个长度为ci 将n个物体分为若干组,每组必须连续 如果把i到j的物品分到一组,则该组长度为 \( j - i + \sum\limits_{k = i}^{j}ck \) 求最小花费 题解思路 \( dp[i] = min(dp[j] + (i - j - 1 + \sum\limits_{k = i}^{j}ck)) \) 然后斜率优化,单调队列维护 代码 #include <cstdio> using namespace std; typedef long lon…
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9812  Solved: 3978[Submit][Status][Discuss] Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具,第i件玩具经过压缩后变成一维长度为Ci.为了方便整理,P…