DP 动态规划
小蒟蒻yyb
Studnet
展开
-
【Luogu1345】周游加拿大(动态规划)
题面题目描述你赢得了一场航空公司举办的比赛,奖品是一张加拿大环游机票。旅行在这家航空公司开放的最西边的城市开始,然后一直自西向东旅行,直到你到达最东边的城市,再由东向西返回,直到你回到开始的城市。除了旅行开始的城市之外,每个城市只能访问一次,因为开始的城市必定要被访问两次(在旅行的开始和结束)。当然不允许使用其他公司的航线或者用其他的交通工具。给出这个航空公司开放的城市的列表,和两两城市之间的直达航原创 2017-11-04 16:43:17 · 439 阅读 · 0 评论 -
【BZOJ4872】分手是祝愿(动态规划,数学期望)
题面BZOJ题解对于一个状态,如何求解当前的最短步数? 从大到小枚举,每次把最大的没有关掉的灯关掉 暴力枚举因数关就好假设我们知道了当前至少要关tot" role="presentation">tottottot次 如果一个灯被动两次以上是没有任何意义的 所以,相当于,要动的灯只有tot" role="presentation">tottottot个 其他的是没有任何原创 2018-02-05 22:30:11 · 179 阅读 · 0 评论 -
【BZOJ2998】Problem A(动态规划)
题面BZOJ题解一个人的成绩范围可以确定为一个区间 这样就变成了 选择若干区间,不重合, 每个区间有个权值,求最大权值和 这样就可直接dpdp了#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<set>#in原创 2018-02-26 11:14:45 · 215 阅读 · 0 评论 -
【BZOJ3992】序列统计(动态规划,NTT)
题面BZOJ题解最裸的暴力 设f[i][j]f[i][j]表示前ii个数,积在膜意义下是jj的方案数 转移的话,每次枚举一个数,直接丢进去就好 复杂度O(nm|S|)O(nm|S|),10pts#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algo原创 2018-02-07 11:57:34 · 245 阅读 · 0 评论 -
【BZOJ1855】股票交易(动态规划,单调队列)
题面BZOJ题解很显然,状态之和天数以及当天剩余的股票数有关 设f[i][j]f[i][j]表示第ii天进行了交易,剩余股票数为jj的最大获利 每次枚举可以转移过来的天数以及股票数 再枚举买入或者卖出的数量, 时间复杂度O(T2Mp2)O(T^2Mp^2),30pts(但是有40pts。。。)#include<iostream>#include<cstdio>#include<cstdl原创 2018-02-07 15:42:29 · 502 阅读 · 0 评论 -
【Luogu1291】百事世界杯之旅(动态规划,数学期望)
题面洛谷题解设f[i]f[i]表示已经集齐了ii个名字的期望现在有两种方法: 先说我自己的: f[i]=f[i−1]+1+(1−p)(1∗p1+2∗p2+....)f[i]=f[i-1]+1+(1-p)(1*p^1+2*p^2+....) 其中p=i−1np=\frac{i-1}{n} 为什么,很简单 首先要多收集一个,期望+1+1是显然的 但是还可能一直买到了已经有的名字中的一个 有原创 2018-02-07 16:46:34 · 306 阅读 · 0 评论 -
【BZOJ1499】瑰丽华尔兹(动态规划)
题面BZOJ题解先写部分分 设f[t][i][j]f[t][i][j]表示当前在tt时刻,位置在i,ji,j时走的最多的步数 这样子每一步要么停要么走 时间复杂度O(nmt)O(nmt) 得分40 7040~70分 (据说这样能过???)#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#incl原创 2018-02-27 13:57:43 · 304 阅读 · 0 评论 -
【BZOJ1415】【NOI2005】聪聪和可可(动态规划,数学期望)
题面BZOJ题解先预处理出当可可在某个点,聪聪在某个点时 聪聪会往哪里走 然后记忆化搜索一下就好了#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<set>#include<map>#include<vecto原创 2018-02-07 19:24:15 · 180 阅读 · 0 评论 -
【BZOJ2442】修建草坪(动态规划,单调队列)
题面权限题。。洛谷题解设f[i]f[i]表示前ii个里面选出来的最大值 转移应该比较显然 枚举一个断点的位置,转移一下就好 f[i]=max(f[j−1]+s[j]−s[i])f[i]=max(f[j-1]+s[j]-s[i]) 所以可以单调队列优化一下 (不优化用各种玄学可以拿90分。。。)#include<iostream>#include<cstdio>#include<cstd原创 2018-02-07 21:36:15 · 305 阅读 · 0 评论 -
【CF932G】Palindrome Partition(回文树,动态规划)
题面CF 翻译: 给定一个串,把串分为偶数段 假设分为了s1,s2,s3....sks1,s2,s3....sk 求,满足s1=sk,s2=sk−1......s_1=s_k,s_2=s_{k-1}......的方案数 题解反正我是不会做 基本就是照着laofulaofu的打了一遍(laofu太强啦)这题分成了两个步骤 如果直接分kk段我们是没法直接判断的 假设两段si,sk−i+1s原创 2018-02-23 17:24:02 · 420 阅读 · 0 评论 -
【BZOJ2134】单位错选(数学期望,动态规划)
题面BZOJ题解单独考虑相邻的两道题目的概率就好了没了呀。。#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<set>#include<map>#include<vector>#include<queue>us原创 2018-02-09 16:19:08 · 153 阅读 · 0 评论 -
【BZOJ1030】文本生成器(AC自动机,动态规划)
题面BZOJ题解超级简单良心送分题 很明显是所有状态-不合法状态 合法状态就是26m26^m 不合法状态做一个dpdp就好#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<set>#include<map>#原创 2018-02-09 15:52:29 · 231 阅读 · 0 评论 -
【BZOJ2004】公交线路(动态规划,状态压缩,矩阵快速幂)
题面BZOJ题解看到k,pk,p这么小 不难想到状态压缩 看到nn这么大,不难想到矩阵快速幂那么,我们来考虑朴素的dpdp 设f[i][j]f[i][j]表示当前位置为ii,前面的PP个位置的状态为jj 其中,状态的含义是某个公交线路最后的停靠站 如果是最后的停靠站就是11,否则是00那么,任意状态中只存在kk个11 并且表示ii的二进制位一定是11 所以状态相当于最多只会有12012原创 2018-02-09 09:46:06 · 265 阅读 · 0 评论 -
【WC2001】【cogs358】高性能计算机(动态规划)
题面【问题描述】现在有一项时间紧迫的工程计算任务要交给你——国家高性能并行计算机的主管工程师——来完成。为了尽可能充分发挥并行计算机的优势,我们的计算任务应当划分成若干个小的子任务。这项大型计算任务包括A和B两个互不相关的较小的计算任务。为了充分发挥并行计算机的运算能力,这些任务需要进行分解。研究发现,A和B都可以各自划分成很多较小的子任务,所有的A类子任务的工作量都是一样的,所有的B类子任务也是如原创 2017-12-25 20:06:00 · 627 阅读 · 0 评论 -
【网络流24题】最长不下降子序列(最大流,动态规划)
题面Cogs题解很有趣的一道题目 尽管我自己还是有一些懵逼第一问,直接大力DP一下,不解释了第二问,考虑到一个长度为ans的子序列的开头 他的dp值一定等于ans, 所以,如果一个点的dp值为ans,就从源点连过去,容量为1因为每个数只能用一次,因此拆点 自己向自己的新点连容量为1的边一个子序列的结束的位置其dp值必定为1 所以从dp值为1的新点向汇点连边,容量为1接下来考虑点与点之间的关原创 2018-01-03 21:40:30 · 471 阅读 · 0 评论 -
【网络流24题】航空线路问题(费用流)
题面Cogs数据有误,提供洛谷题面题解这题和原来做过的一道题周游加拿大是一模一样的 所以,这题DP+记录方案应该也是可行的来考虑网络流的做法 现在的来回,被看成是去两次 所以流量被限定死了,为2 因此要考虑费用流来求解。每个点只能经过一次 很显然先拆点 如果一个城市被访问了 那么,他的两个点直接的流量是一定存在的 为了记录下这个点被访问过 所以,给定它一个费用1然后其他的连边和原来原创 2018-01-03 22:30:50 · 312 阅读 · 0 评论 -
【BZOJ1040】骑士(动态规划)
题面BZOJ题解对于每一组厌恶的关系 显然是连边操作如果是一棵树的话 很显然的树型dpdp 但是,现在相当于有很多个基环 也就是在一棵树的基础上再加了一条边 这个时候怎么办, 暴力拆掉基环(拆掉任意一条边) 跑两遍dpdp 计算出强制不选两个点中某一个的最大值 此时就是这个基环的最大值 (不用拆掉所有的边,因为只要拆掉一条边之后可以用树型dpdp来控制)可能存在多个联通块 所以原创 2018-01-18 12:16:54 · 358 阅读 · 0 评论 -
【BZOJ1009】GT考试(KMP算法,矩阵快速幂,动态规划)
题面BZOJ题解看到这个题目 化简一下题意 长度为nn的,由0~90~9组成的字符串中 不含串ss的串的数量有几个很显然,如果组成的字符串和ss串做KMPKMP的匹配的话 是不能匹配到最后一位的所以,我们想到一个很显然的方程 f[i][j]f[i][j]表示当前做了第ii位,在ss串中匹配到了第jj位 每次枚举下一位放的数字 以及每一位的位置 相当于做KMP原创 2018-01-18 15:41:15 · 281 阅读 · 0 评论 -
【BZOJ1899】午餐(动态规划)
题面BZOJ题解我太弱了 这种dpdp完全做不动。。首先,感性理解一些 如果所有人都要早点走, 那么,吃饭时间长的就先吃 吃饭时间短的就晚点吃 所以,按照吃饭时间排序我们不难得出一个每个人吃完饭的时间 之和前面所有人的打饭的时间和有关 所以 f[i][j][k]f[i][j][k]表示当前做到第ii个人,第一列,第二列前面的人的打饭时间之和分别为j,kj,k时,最后一个人吃完饭的最小原创 2018-01-18 16:39:35 · 279 阅读 · 0 评论 -
【BZOJ2037】Sue的小球(动态规划)
题面BZOJ题解莫名想到这道题目 很明显是一样的 设f[i][j][0/1]f[i][j][0/1]表示已经接到了i~ji~j这一段的小球 当前在ii或者在jj的最小费用 这个费用是随着时间增长,没有被接到的小球产生的这样就可以避免存下时间 提前就把费用减去#include<iostream>#include<cstdio>#include<cstdlib>#include<cstr原创 2018-01-18 19:33:38 · 330 阅读 · 0 评论 -
【BZOJ1996】合唱队(动态规划)
题面BZOJ题解很容易的一道题 因为每个人不是放在了左边就是放在了右边 所以每次放好的人必定是原序列的一个子串 所以,很容易想到区间dpdp 设f[i][j]f[i][j]表示已经放好了第ii个人到第jj个人的方案数 因为不知道这个人的前面是当前序列的左端还是右端 所以再加一维[0/1][0/1]表示上一个放的人在左边还是右边 然后分类讨论一下大力转移即可#include<iostre原创 2018-02-02 16:39:38 · 156 阅读 · 0 评论 -
【BZOJ3530】数数(AC自动机,动态规划)
题面BZOJ题解很套路的ACAC自动机+DPDP 首先,如果长度小于NN 就不存在任何限制 直接大力DPDP 然后强制限制不能走到带有标记的点上面如果长度恰好为NN的长度 那么,要考虑是否恰好卡在范围里面 于是DPDP状态多记一维 表示是否卡在范围里面最后求一下和就行啦#include<iostream>#include<cstdio>#include<cstdlib>#incl原创 2018-01-19 19:27:46 · 265 阅读 · 0 评论 -
【BZOJ4300】绝世好题(动态规划)
题面BZOJDescription给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2Input输入文件共2行。 第一行包括一个整数n。 第二行包括n个整数,第i个整数表示ai。Output输出文件共一行。 包括一个整数,表示子序列bi的最长长度。Sample Input31 2 3Sample O原创 2018-03-16 21:34:22 · 331 阅读 · 0 评论 -
CF954F Runner's Problem(动态规划,矩阵快速幂)
题面CodeForces 翻译: 有一个3×M3\times M的田野 一开始你在(1,2)(1,2)位置 如果你在(i,j)(i,j)位置 在不出界的前提下,可以走到(i+1,j),(i+1,j±1)(i+1,j),(i+1,j±1) 有nn段障碍,障碍不能走 询问从(1,2)(1,2)到达(M,2)(M,2)的方案数 n<=104,M<=1018n<=10^4,M<=10^{18原创 2018-03-22 21:01:01 · 238 阅读 · 0 评论 -
【BZOJ2806】Cheat(后缀自动机,二分答案,动态规划,单调队列)
题面BZOJ 洛谷题解很有趣的一道题啊对于在所有的串上面进行匹配? 很明显的后缀自动机 所以先构建出广义后缀自动机然后这个拆分很像一个dpdp 同时,要求的东西很像一个可以二分的样子所以二分一个答案,考虑如何dpdp 设f[i]f[i]表示处理完前ii个字符,能够匹配上的最多的字符个数 转移是f[i]=max(f[j]+i−j)f[i]=max(f[j]+i-j),满足i−j>midi-原创 2018-03-13 20:22:57 · 274 阅读 · 0 评论 -
【BZOJ4316】小C的独立集(动态规划)
题面BZOJ题解考虑树的独立集求法 设f[i][0/1]f[i][0/1]f[i][0/1]表示iii这个点一定不选,以及iii这个点无所谓的最大值 转移f[u][0]=∑f[v][1]f[u][0]=∑f[v][1]f[u][0]=\sum f[v][1],f[u][1]=∑f[v][0]f[u][1]=∑f[v][0]f[u][1]=\sum f[v][0],f[u][1]=m...原创 2018-05-25 16:26:29 · 391 阅读 · 0 评论 -
【BZOJ4316】小C的独立集(仙人掌,动态规划)
题面BZOJ题解除了普通的动态规划以外,这题还可以用仙人掌的做法来做。 这里没有必要把圆方树给建立出来 TarjanTarjanTarjan的本质其实就是一个构建dfsdfsdfs树的过程 所以我们在TarjanTarjanTarjan的过程中求解就行了 我们设f[i][0/1]f[i][0/1]f[i][0/1]表示当前节点为iii,选或不选的子树的最大独立集 当一条边...原创 2018-05-25 20:11:33 · 351 阅读 · 0 评论 -
【BZOJ1023】仙人掌图(仙人掌,动态规划)
题面BZOJ 求仙人掌的直径(两点之间最短路径最大值)题解一开始看错题了,以为是求仙人掌中的最长路径。。。 后来发现看错题了一下就改过来了。。首先和普通的仙人掌dpdpdp是一样的, 对于没有问题的圆圆边,直接做最长链的转移(同时更新ansansans) 然后对于一个环,把它拎出来单独考虑 首先要对于这个环,计算能够贡献的答案, 然后再用环上的值更新环的最顶点 先...原创 2018-05-25 21:52:58 · 802 阅读 · 0 评论 -
【BZOJ3991】寻宝游戏(动态规划)
题面BZOJ题解很明显,从任意一个有宝藏的点开始,每次走到相邻的dfsdfsdfs的节点就行了。 证明? 类似把一棵树上的关键点全部标记出来 显然是要走一个大环。 这样沿着dfsdfsdfs序从左至右依次便利是最优的。 用一个setsetset维护一下就行了#include<iostream>#include<cstdio>#inclu...原创 2018-05-22 20:20:21 · 497 阅读 · 0 评论 -
【BZOJ1564】【NOI2009】二叉查找树(动态规划)
题面BZOJ 洛谷 题目描述已知一棵特殊的二叉查找树。根据定义,该二叉查找树中每个结点的数据值都比它左儿子结点的数据值大,而比它右儿子结点的数据值小。另一方面,这棵查找树中每个结点都有一个权值,每个结点的权值都比它的儿子结点的权值要小。已知树中所有结点的数据值各不相同;所有结点的权值也各不相同。这时可得出这样一个有趣的结论:如果能够确定树中每个结点的数据值和权值,那么树的形态便...原创 2018-05-28 10:57:58 · 291 阅读 · 0 评论 -
【CF613D】Kingdom and its Cities(虚树,动态规划)
题面洛谷 CF 翻译洛谷上有啦题解每次构建虚树,首先特判无解,也就是关键点中存在父子关系。 考虑dpdpdp,设f[i]f[i]f[i]表示解决iii子树以内的最小点数 再用一个数组g[i]g[i]g[i]表示iii的子树中还未阻断的点数 f[u]=∑f[v],g[u]=∑g[v]f[u]=∑f[v],g[u]=∑g[v]f[u]=\sum f[v],g[u]=\sum g[...原创 2018-05-28 21:56:00 · 385 阅读 · 0 评论 -
【BZOJ4753】最佳团体(分数规划,动态规划)
题面BZOJDescriptionJSOI信息学代表队一共有N名候选人,这些候选人从1到N编号。方便起见,JYY的编号是0号。每个候选人都由一位 编号比他小的候选人Ri推荐。如果Ri=0则说明这个候选人是JYY自己看上的。为了保证团队的和谐,JYY需要保证, 如果招募了候选人i,那么候选人Ri”也一定需要在团队中。当然了,JYY自己总是在团队里的。每一个候选人都有 一个战斗值...原创 2018-05-24 16:47:41 · 218 阅读 · 0 评论 -
【BZOJ1566】【NOI2009】管道取珠(动态规划)
题面BZOJ题解蛤?只有两档部分分。一脸不爽.jpg 第一档?爆搜,这么显然,爆搜+状压最后统计一下就好了#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;cstdlib&gt;#include&lt;cstring&gt;#include&lt;cmath&原创 2018-06-15 16:51:20 · 147 阅读 · 0 评论 -
【Luogu1912】【NOI2009】诗人小G(动态规划)
题面洛谷题解原来NOINOINOI这么多神仙题。。。 考虑一个极其明显的dpdpdp 设f[i]f[i]f[i]表示前iii个句子产生的最小代价 转移也很显然,就懒得写了。 仔细思考一下,转移具有单调性。 但是我们用单调队列似乎无法直接维护。 继续思考一下,我们的转移结果一定是从前面一个位置转移过来的 并且一定是一段连续的位置都由那个位置转移过来。 同时,如果iii从j...原创 2018-06-15 21:30:16 · 704 阅读 · 0 评论 -
【BZOJ2286】消耗战(虚树,动态规划)
题面BZOJDescription在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达。现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军胜利在望。已知在其他k个岛屿上有丰富能源,为了防止敌军获取能源,我军的任务是炸毁一些桥梁,使得敌军不能到达任何能源丰富的岛屿。由于不同桥梁的材质和结构不同,所以炸毁不同的桥梁...原创 2018-05-21 11:21:17 · 103 阅读 · 0 评论 -
【BZOJ5299】【CQOI2018】解锁屏幕(动态规划,状态压缩)
题面BZOJ 洛谷Description使用过Android手机的同学一定对手势解锁屏幕不陌生。Android的解锁屏幕由3x3个点组成,手指在屏幕上画一条线将其中一些点连接起来,即可构成一个解锁图案。如下面三个例子所示:画线时还需要遵循一些规则1.连接的点数不能少于4个。也就是说只连接两个点或者三个点会提示错误。2.两个点之间的连线不能弯曲。3.每个点只能”使用”一次,不可重复。这里的”使用”是原创 2018-04-21 15:08:49 · 348 阅读 · 0 评论 -
【BZOJ5288】【HNOI2018】游戏(乱搞?)
题面BZOJ 洛谷题面自己到洛谷上看把题解考场上乱搞拿到了9090分,简直不敢相信。 回家把代码再交了一份直接就ACAC了???O(n2)O(n^2)的做法应该很容易想 对于每个点作为起点,暴力向左右两侧拓展, 看看它能够到达的区间就行了。考虑怎么优化一下,发现如果拓展的时候走到了一个已经拓展完的节点 那么一定能够到达这个点能够到达的左右位置 因此,直接沿着当前点能够到达的最远左右位置跳原创 2018-04-17 20:25:51 · 356 阅读 · 0 评论 -
【HDU4336】Card Collector (动态规划,数学期望)
题面Vjudge题解设f[i]f[i]表示状态ii到达目标状态的期望 f[i]=(∑f[j]∗p[j]+1)/(∑p[j])f[i]=(\sum f[j]*p[j]+1)/(\sum p[j]) 直接枚举一下即可#include<cstdio>int n;float f[1<<20],p[20];int main(){ while(scanf("%d",&n)!=EOF)原创 2018-03-29 19:58:43 · 314 阅读 · 0 评论 -
【NOIP2017】宝藏(状态压缩,动态规划)
题面洛谷 题目描述参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的 m 条道路和它们的长度。小明决心亲自前往挖掘所有宝藏屋中的宝藏。但是,每个宝藏屋距离地面都很远, 也就是说,从地面打通一条到某个宝藏屋的道路是很困难的,而开发宝藏屋之间的道路 则相对容易很多。小明的决心感动了考古挖掘的赞助商,赞助商决定免费赞助他打通一条从地面到原创 2018-03-29 20:05:52 · 724 阅读 · 0 评论 -
【BZOJ4828】【HNOI2017】大佬(动态规划)
题面BZOJ 洛谷 LOJ 人们总是难免会碰到大佬。他们趾高气昂地谈论凡人不能理解的算法和数据结构,走到任何一个地方,大佬的气场 就能让周围的人吓得瑟瑟发抖,不敢言语。你作为一个OIER,面对这样的事情非常不开心,于是发表了对大佬不敬 的言论。大佬便对你开始了报复,你也不示弱,扬言要打倒大佬。现在给你讲解一下什么是大佬,大佬除了是神犇 以外,还有着强大的自信心,自信程度可以被量化为...原创 2018-03-30 21:49:17 · 337 阅读 · 0 评论