【BZOJ 1233】 干草堆】的更多相关文章

$ BZOJ~1233~~ $ 干草堆: (题目特殊性质) $ solution: $ 很妙的一道题目,开始看了一眼觉得是个傻逼贪心,从后往前当前层能多短就多短,尽量节省花费.但是这是DP专题,怎么会有一道小贪心混进来?上网一搜,我果然还是太笨了! 6 11 10 7 3 2 6 这组小数据直接把贪心逼上绝路,如果顶层只有6(6-237-1011),只有三层.而如果顶层宽一点(62-37-10-11),就有四层了.什么!我之前好心节省草包,居然办了坏事? 好吧,题目限定了每一个草包都必须用,这样…
1233: [Usaco2009Open]干草堆tower Description 奶牛们讨厌黑暗. 为了调整牛棚顶的电灯的亮度,Bessie必须建一座干草堆使得她能够爬上去够到灯泡 .一共有N大包的干草(1<=N<=100000)(从1到N编号)依靠传送带连续的传输进牛棚来.第i包干草有一个 宽度W_i(1<=w_i<=10000).所有的干草包的厚度和高度都为1. Bessie必须利用所有N包干草来建立起干草堆,并且按照他们进牛棚的顺序摆放.她可以相放多少包就放 多少包来建立起…
1233: [Usaco2009Open]干草堆tower Description 奶牛们讨厌黑暗. 为了调整牛棚顶的电灯的亮度,Bessie必须建一座干草堆使得她能够爬上去够到灯泡 .一共有N大包的干草(1<=N<=100000)(从1到N编号)依靠传送带连续的传输进牛棚来.第i包干草有一个 宽度W_i(1<=w_i<=10000).所有的干草包的厚度和高度都为1. Bessie必须利用所有N包干草来建立起干草堆,并且按照他们进牛棚的顺序摆放.她可以相放多少包就放 多少包来建立起…
[题目链接] 点击打开链接 [算法] 这题有一个性质 : 位于顶层的干草堆可以满足宽度最小且高度最高 根据这个性质,用单调队列优化DP,即可 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 100010 int i,n,head,tail; int a[MAXN],sum[MAXN],q[MAXN],f[MAXN],h[MAXN]; int main() { scanf("%d",&n);…
1233: [Usaco2009Open]干草堆tower Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 983  Solved: 464[Submit][Status][Discuss] Description 奶牛们讨厌黑暗. 为了调整牛棚顶的电灯的亮度,Bessie必须建一座干草堆使得她能够爬上去够到灯泡 .一共有N大包的干草(1<=N<=100000)(从1到N编号)依靠传送带连续的传输进牛棚来.第i包干草有一个 宽度W_i(1<…
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1233 单调队列优化的第一题,搞了好久啊,跟一开始入手斜率优化时感觉差不多... 这一题想通了之后其实不是很难,主要是需要拐弯的地方有点点多,直接写正解叭~ 首先,这一题要求的是最大叠多少层.可以这样想:最底层的长度越小,层数越高.尽管这不是很严格,不过还算是比较显然(但是根本就没往这上面想啊!),因为越窄,就会越高嘛.换句话说“最大能叠多少层”等价于“最底层长度最小为多少”!只要这个想通了…
Description 奶牛们讨厌黑暗. 为了调整牛棚顶的电灯的亮度,Bessie必须建一座干草堆使得她能够爬上去够到灯泡 .一共有N大包的干草(1<=N<=100000)(从1到N编号)依靠传送带连续的传输进牛棚来.第i包干草有一个 宽度W_i(1<=w_i<=10000).所有的干草包的厚度和高度都为1. Bessie必须利用所有N包干草来建立起干草堆,并且按照他们进牛棚的顺序摆放.她可以相放多少包就放 多少包来建立起tower的地基(当然是紧紧的放在一行中).接下来他可以放置…
问题描述: 若有干个干草, 分别有各自的宽度, 要求将它们按顺序摆放, 并且每层的宽度不大于 它的下面一层 ,  求最多叠几层 题解: zkw神牛证明了: 底边最短, 层数最高         证明:传送门 接下来我们就可以根据这个结论进行dp. 前缀和sum, 以及 F[ i ]第 i 个数之后的干草叠起来后, 底层的最短宽度, 以及 H[ i ] 表示 第i个后的干草堆最高叠几层 有转移方程 : F[ i ] = min( sum[ j - 1] - sum[i - 1] ) ( j > i…
题目链接 BZOJ1233 题解 有一个贪心策略:同样的干草集合,底长小的一定不比底长大的矮 设\(f[i]\)表示\(i...N\)形成的干草堆的最小底长,同时用\(g[i]\)记录此时的高度 那么 \[f[i] = min\{f[j]\} \quad [sum[j - 1] - sum[i - 1] \ge f[j]]\] 变形一下 \[sum[i - 1] \le sum[j - 1] - f[j]\] 我们知道\(j\)越小一定不比\(j\)更大的劣 所以我们只需要在满足该式条件下尽量往…
首先这题的$n^3$的DP是比较好想的 $f[i][j]$表示用前$i$包干草 且最顶层为第$j+1$包到第$i$包 所能达到的最大高度 然而数据范围还是太大了 因此我们需要去想一想有没有什么单调性 ---------------------------------------------------------------------------------------------------- 从其他人的题解中 可以看到一个结论 我们尽量使底层最短 便可逐渐达到最优解 然后再结合递推的思想去…