![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线性DP
文章平均质量分 92
zwjdd_qwq
这个作者很懒,什么都没留下…
展开
-
洛谷P2339 提交作业usaco
这题算是一个典型的区间DP,方程式和奶牛零食极其的像,思想也是 我们定义dp[i][j][0/1]dp[i][j][0/1]dp[i][j][0/1]表示区间[i,j][i,j][i,j]内,除了i(0)i(0)i(0) 和j(1)j(1)j(1)其他都没选的最短时间 方程式的转移就很简单 我们思考一个简单的贪心策略 对于一段任务区间,如果我们先选了开门早的中间节点,那么我们一定会返回至两个区间端...原创 2019-10-30 01:07:58 · 180 阅读 · 0 评论 -
洛谷P2340 奶牛会展
一道不错的背包题,难度并不大,但有一些细节 这题要求两个互不影响的值的总和最大,猛一看可能觉得是贪心,一顿排序然后。。。。。 也太容易证明是错的了,,, 我们换一个角度,我们转换一维变成费用,于是我们每选一头牛,代价可能增或降(情商为正或负) 所得也会增加或减少(智商为正或负),我们求出在固定情商下智商的总和最大值,暴力枚举所有的情商统计答案即可,这是妥妥的01背包啊 但是这样会发现一个很大的问题...原创 2019-10-30 00:38:09 · 125 阅读 · 0 评论 -
篮球
换一个理解方式: 有一个由N(N<=1000)个数字组成的序列,我们每次取出两个子序列S1和S2,满足以下条件: 1.每个数字只出现一次,可以放在S1或者S2里,也可以都不放,但S1和S2不能为空,且S2中的任意一个数字,在原序列中的位置必须在S1任何一个数字之后。 2.S1中所有数字异或(^)和必须等于S2中所有数字的与(&)和。 3.对于一组{S1,S2},当且仅当其中任意一个...原创 2019-10-28 20:45:03 · 195 阅读 · 0 评论 -
「Usaco2013 Dec」最优挤奶
这一题实际上就是线段上的最大独立集 因为带了修改,所以还有了点动态DP的意思?? 比较暴力的写法是对于每次改值操作,全部重新DP 那肯定过不去 想想原因,因为每次重新DP重复计算了太多了计算过的值 而且,对于连续一段来说,他并没有后效性,就是不影响后面的选择 同时,后面的选择也不影响前面的 那么单点更新,可不可以每次调用以前算过的解呢? 当然可以,于是我们引出了线段树 因为要求独立集而且无前后效性...原创 2019-10-17 20:48:22 · 149 阅读 · 0 评论 -
P2344「Usaco2011 Feb」奶牛抗议
这题是真的水爆 一个O(N2)O(N^2)O(N2)的暴力有92pts92pts92pts… 实际上正解也不难写,我们的暴力是把前面的累加起来,判正负 我们把前缀和的正负变为sumsumsum的大小,即sum[x]−sum[y]>=0sum[x]-sum[y]>=0sum[x]−sum[y]>=0 等价于sum[x]>=sum[y]sum[x]>=sum[y]sum[...原创 2019-10-08 23:22:36 · 106 阅读 · 0 评论 -
「Usaco2010 Jan」轮流吃草
一个类似于博弈的DP 我们要保证一个人最优,那么我们有两种选择 当前点拿,我们从上次取的权值和加当前权值转移 不拿的话,第二个人也拿不了,继承原来的值 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<cstdlib> using ...原创 2019-10-08 20:59:53 · 165 阅读 · 0 评论 -
「Usaco2010 Nov」买饲料1O(∩_∩)O
这题的最直接算法是O(n2k)O(n^2k)O(n2k)的暴力Dp for(int i=1;i<=n;i++) for(int k=0;k<=sta[i].f;k++) for(int l=0;l<=sum[i]-k;l++) f[i][l+k]=min(f[i][l+k],f[i-1][l]+(l)*(l)*(sta[i].x-s...原创 2019-10-08 19:49:07 · 123 阅读 · 0 评论 -
洛谷P2258 子矩阵
这是一道比较无聊的题目,虽然看上去极其的吓人,但是看完N是小于等于16之后,一切皆有可能 首先,要选出r行c列,我们分开做,暴力枚举出所有的行状态,对于每一种状态分别DP,最后更新答案即可 DP我是这么写的f[i][j]f[i][j]f[i][j]表示原图第jjj列选了要求矩阵的第iii列,所得到矩阵的最小值 转移十分的显然f[i][j]=min(f[i][j],f[i−1][(i−1)−&...原创 2019-09-13 00:54:01 · 226 阅读 · 0 评论 -
洛谷P3146 [USACO16OPEN]248
我果然还是弟弟 一眼看这题,裸的区间Dp嘛,啪啪啪打完,样例完美通过,直接交 结果自然喜闻乐见 为什么会这样,我阶段输出了一下DP过程中值的变化情况,发现了这么一个操蛋问题 我的DP是这样的 多么朴实无华 for(int l=1;l<=n;l++){ for(int r=l+1;r<=n;r++){ for(int k=l;k<r;k++){ if(f[l][...原创 2019-09-11 23:57:53 · 205 阅读 · 0 评论 -
洛谷P4066 [SHOI2003]吃豆豆
感觉和传纸条很像,听说网络流能写 然而并不想写,还是选择了拓排加DP 考虑一下这题和传纸条DP的区别 边界N.M过大,2000,无法承受O(N2∗M2)O(N^2*M^2)O(N2∗M2)算法,甚至优化后的O(N∗M2)O(N*M^2)O(N∗M2)的也不行 我们考虑改变DP顺序,因为这题的豆子是空间内的一些点,而且每次只能往上往右走,如果按照传纸条的方法DP,会求出非常多的无用量,如何避免呢,我...原创 2019-09-04 23:25:28 · 156 阅读 · 0 评论 -
bzoj1605 洛谷2905 [Usaco2008 Open]Crisis on the Farm 牧场危机(DP)
很暴力的一个题 这个题目大概分为以下几步 一、计算从原点走多少步产生的贡献 曼哈顿距离搞一搞 二、进行DP求最大值 按照字典序贪心的按WSNE进行DP,取最后一个 三、检查合格的终止点 便利一遍DP数组即可 四、倒序求出路径 通过前后产生的差量判断是否可以转移 五、输出路径 按照ans的偏移量进行输出 End. 解析见注释 代码(换码风丑死了) #include<iostream> #...原创 2019-08-29 21:49:48 · 161 阅读 · 0 评论 -
洛谷P5468(DP)回家路线
蒟蒻竟然能过一题,可能数据比较水qwq 我们选择dp f[i][j]f[i][j]f[i][j] 表示 在 时间 jjj 到达 iii 点 最小的烦躁值 所以f[edge[i].y][edge[i].q]=minf[edge[i].y][edge[i].q]=minf[edge[i].y][edge[i].q]=min(f[edge[i].x][j]+val(edge[i].p−jf[edge[i...原创 2019-07-29 00:22:58 · 134 阅读 · 0 评论