
动态规划
文章平均质量分 57
空灰冰魂
=NULL
展开
-
【BZOJ3566】【SHOI2014】概率充电器 树形DP 概率DP
题解:首先无根树转化为有根树。 fi:f_i: 表示 ii 节点由其子树内节点充【不上】电的概率。 gi:g_i: 表示 ii 节点由其父亲节点充【不上】电的概率。 hi:h_i: hi=fi+(1−fi)∗(1−其父到其的导线的充电概率)h_i=f_i+(1-f_i)*(1-其父到其的导线的充电概率) 表示对父亲 fif_i 的贡献。先dfs一遍, fi=(1−自己直接来电的概率原创 2015-06-11 17:53:25 · 2292 阅读 · 0 评论 -
【BZOJ3892】【Usaco2014 Dec】Marathon (Silver and Bronze) 暴力动规
题解——Silverf[i][j]表示到第i个跳过了j个的最小值 然后暴力从前转移。 它的时间复杂度是1.25亿,但是常数远远远远小于1——Bronze跟银组的一样,只不过改改数组大小,然后m直接赋值1就好了。银组代码:#include #include #include #include #include #define N 505#define原创 2015-02-27 18:05:48 · 2176 阅读 · 0 评论 -
【BZOJ1560】【JSOI2009】火星藏宝图 动规
题解:我们先把点排序,优先排行。呃,我们或许可以暴力建边(但如果a->b,b->c,则a不连c)但是如果把正方形拆成四个,然后左上角往右上来10W个,然后……等会,我想错了,这种方法貌似可以做,自己脑补一下去吧,拓扑图DP。下面说正解:我们扫一遍这些点,记录pos[i]表示第i列[当前]最靠下的有点位置,然后f[i]记录它的动规值。然后O(M)扫一遍得到当前原创 2015-01-22 22:18:43 · 1672 阅读 · 0 评论 -
【BZOJ1806】【IOI2007】Miners 矿工配餐 动态规划
题解:f[i][j][k][l][m]表示到第i个字母,第一坑的当前两个字母是jk,第二坑lm时的最大权值。然后暴力瞎转移就好了。对了,10W*4*4*4*4=2560W,64M内存限制,要写滚动数组。代码:#include #include #include #include #define N 101000#define inf 0x3f3f3f3fusin原创 2015-01-21 16:01:13 · 2023 阅读 · 0 评论 -
【USACO 2008 Nov Gold】 1.Mixed Up Cows 状压DP、
题解:首先考虑dfs,但是看到答案的“64bit”就放弃了吧、所以肯定是组合数、状压DP什么的,尤其是那个16,标准的状压数。好吧,就是状压DP。f[i][j]表示i是状压的01串表示哪个取了哪个没取,然后j是结尾字符,虽然水,但是时间复杂度是可以过的。代码:#include #include #include #include #include原创 2015-01-02 11:46:18 · 1613 阅读 · 0 评论 -
【BZOJ2786】【Ural1142】Relation 递推,动态规划,高精度,Python
题解:f[i][j]表示前i个数分成j段【段:两个数=则为一段】然后转移方程f[i][j]=f[i-1][j-1]*j+f[i-1][j]*j就是不增加段,那么第i个数可以放到f[i-1][j]时的任意段中增加段,那么我们随意插到某空中代码:#f[i][j]=f[i-1][j-1]*j+f[i-1][j]*jans=[0]*60f=[ ([0]*6原创 2015-01-21 10:38:40 · 1267 阅读 · 0 评论 -
【USACO 2008 Open Gold】 2.Crisis on the Farm 动规、
题意:输入n、m、p然后是n头牛塔坐标、m个草垛坐标,有p次指令机会。每次指令可以向上下左右其中一种方向,让所有牛塔都移动一单位。然后每经过草垛/牛塔次,就有1个权值。求权值最大值及使权值最大的移动指令序列(字典序最小)。题解:f[i][j][k]表示第i次,移动序列x轴坐标为j,y轴k,最大权值。然后倒着做以保证字典序。代码:#include原创 2015-01-01 15:56:26 · 1306 阅读 · 0 评论 -
【BZOJ1044】【HAOI2008】木棍分割 二分+动规
第一问裸二分,第二问乱搞。f[i][j]表示用掉i次机会,到j时合法的方案数。代码:#include #include #include #include #define N 50100#define mod 10007#define inf 0x3f3f3f3fusing namespace std;int sk[N],sum[N],n,m;bool che原创 2015-01-20 17:41:36 · 2050 阅读 · 0 评论 -
【BZOJ1084】【SCOI2005】最大子矩阵 傻动规
题解:这数据范围,来乱搞吧少年。我的乱搞:m==1时做一遍,m==2时做一遍。别讨论少情况就好,m==2时时间复杂度n^3。代码:#include #include #include #include #define N 105using namespace std;int map[N][3],s[N][3],sum[N];int f[N][N原创 2015-01-20 08:44:15 · 1992 阅读 · 0 评论 -
【POJ3666】【USACO 2008 Feb Gold】 2.Cow Game 动规
除草,水题,勿看。原创 2014-12-30 21:52:38 · 1304 阅读 · 0 评论 -
【BZOJ1996】【Hnoi2010】chorus 合唱队 动态规划
题解:f[N][N][2]暴力维护即可。代码:(水得我都不敢测样例就直接交了)#include #include #include #include #define N 1005#define inf 0x3f3f3f3f#define mod 19650827using namespace std;int f[N][N][2];int s[N],n;int原创 2015-02-27 14:24:07 · 1666 阅读 · 0 评论 -
【BZOJ3890】【Usaco2015 Jan】Meeting Time 拓扑图简单DP
广告:题意:给出一个n个点m条边的有向无环图,每条边两个边权。 n然后要求两条长度相同且尽量短的路径, 路径1采用第一种边权,路径2采用第二种边权。 没有则输出”IMPOSSIBLE”题解:简单拓扑图DP。 bool型数组f[i][j]、g[i][j]表示第i个点是否有1到此点权值为j的路径1、2。代码:#include #include原创 2015-02-27 19:43:17 · 1575 阅读 · 0 评论 -
【USACO 2015 Open Gold】Palindromic Paths 动态规划
题解:f(i,j,k,l)f(i,j,k,l) 表示起点横着走 ii 步,竖着走 jj 步,终点竖着走 kk 步,横着走 ll 步时的回文方案数。 然后跑动态规划时 f(i,j,k,l)f(i,j,k,l) 可以更新 f(i+1,j,k+1,l)、f(i+1,j,k,l+1)、f(i,j+1,k+1,l)、f(i,j+1,k,l+1)f(i+1,j,k+1,l)、f(i+1,j,k,l+原创 2015-04-23 15:38:15 · 2121 阅读 · 0 评论 -
【BZOJ2298】【HAOI2011】problem a 动态规划
题解:一句话 (a,b)(a,b) 可以理解成一个线段 (a,n−b](a,n-b] 。 然后排个序去下重,最后一个线段的权值 xx 就是表示 这 xx 人互不冲突,一起算。然后动态规划求若干条不相交线段的权值最大值,最后用总人数减去就行了。 fif_i 表示有 ii 人时最大权值。 fseqi→ r=max ( fsi→ r , fsi→ l+si→ x原创 2015-04-10 14:41:10 · 1421 阅读 · 0 评论 -
【BZOJ1925】【Sdoi2010】地精部落 动规 不知语,人已醉。 Euler Zigzag Number
。不会啊。Euler Zigzag Number好神啊~ 但是我可以给你丽洁爷的链接 http://hi.baidu.com/wjbzbmr/item/da020be63f6f41f92b09a410 fi,j=fi,j−1+fi−1,i−jf_{i,j}=f_{i,{j-1}}+f_{i-1,i-j} 丽洁原话:【是1到n的排列中第一个是k且一开始下降的数量】 就是说fi,jf原创 2015-03-25 00:05:56 · 2601 阅读 · 2 评论 -
【BZOJ3622】已经没有什么好害怕的了 动态规划+容斥原理
题解:首先我们给AA数组(糖果)和BB数组(药片)从小到大排个序。 lastilast_i 表示一个极大值 xx 使得 BxAiB_x 。 f(i,j)f(i,j) 表示枚举到第 AiA_i 时,有至少 jj 对匹配,使得 A∗∗∗>B∗∗∗A_{***}>B_{***} 然后枚举到 AiA_i 不代表也必须只能使用 BiB_i 以及其前的B数组元素。f(i,j)=f(i−1,j)+原创 2015-04-02 19:20:33 · 2778 阅读 · 3 评论 -
【BZOJ1003】【ZJOI2006】物流运输trans 最短路预处理+动态规划
题解:首先我们跑出fi,jf_{i,j}表示i到j这些天都是相同路线的最小代价。 然后暴力维护gig_i表示前i天最小代价。fi,jf_{i,j}可以枚举i,ji,j,暴力处理哪些点不能用,然后跑最短路。 时间复杂度 暴力处理废点O(n3m)O(n^3m) SPFA 是O(n2spfa)O(n^2 spfa)大约O(n2m2)?O(n^2m^2)?反正能过。 然后暴力处理废点原创 2015-03-23 20:46:44 · 1970 阅读 · 0 评论 -
【BZOJ3886】【Usaco2015 Jan】Moovie Mooving 状态压缩 动态规划
题意:PoPoQQQ要在电影院里呆L分钟,这段时间他要看小型电影度过。电影一共N部,每部都播放于若干段可能重叠的区间,现在PoPoQQQ要看尽量少的电影来度过这段时间,同时他决不会看同一部电影两次。题解:状压DP,f[i]表示状态为i时从0最远连续看到哪。 然后转移上枚举还要看哪部电影,贪心取能看的片场中最靠后的一个。 然后时间复杂度O(2N×N×xxxx)O(2^N\times原创 2015-03-05 16:38:12 · 1924 阅读 · 0 评论 -
【BZOJ2560】串珠子
题解:gig_i 表示状态为i时随便连边时的方案个数 fif_i 表示状态为i时图是连通图的方案个数gig_i好求,直接枚举一个里面的点aa,然后向外面某点bb连边得到 gi|(1b)g_{i|(1 然后我们可以在从gig_i中减去某些东西得到fif_i。 先确定一个小的连通块,状态为a,然后其它点的状态就是i^a 然后显然ga×fi xor ag_a\times f_{i\ xo原创 2015-03-04 15:04:40 · 2054 阅读 · 0 评论 -
【BZOJ3875】【Ahoi2014】骑士游戏 SPFA处理有后效性动规
题解:首先一个点可以分裂成多个新点,这样就有了图上动规的基础。 即f[i]表示i点被消灭的最小代价,它可以由分裂出的点们更新。但是这个东西有后效性,所以我们用SPFA来处理它。spfa处理后效性动规我们每更新一个点A的动规值,就会有若干个点的动规值可能被更新。 即可以分裂出点A的那些点。 于是A出队后一旦动规值被更新了,就把那些点入队。初始时要把所有点入队,因为它们都可能原创 2015-03-03 17:26:03 · 2634 阅读 · 0 评论 -
【BZOJ1087】【SCOI2005】互不侵犯King 状态压缩 动态规划 水题 都不用加特技
题解:一开始让我写这道题,其实我是,是接受的。 BalaBala。 毕竟水题,都不用特技。裸状压DP。 直接f[i][j][k]表示原创 2015-03-02 19:39:55 · 1387 阅读 · 0 评论 -
【BZOJ1011】【HNOI2008】遥远的行星 根据所允许的误差进行模糊DP
n*n会挂?前缀和、斜率优化啥的都不好使?等等,题意中有个允许误差范围?诶?原创 2014-12-26 14:35:59 · 1379 阅读 · 0 评论 -
【POJ3415】Common Substrings 后缀自动机
题意:给两个串,问有多少长度大于等于K的公共子串(位置不同也算一对)题解:后缀自动机DP对第一个串建立后缀自动机,然后做一些预处理,然后拿第二个串在后缀自动机上跑,到每个节点加一次贡献。但是这样需要每个点往parent树上跑一遍,会TLE,所以可以加个lazy。然后代码中有两次运用到拓扑序来从子向父推DP值。呃,说得乱糟糟的。Orz No_stop不原创 2015-01-14 15:00:18 · 2386 阅读 · 0 评论 -
【BZOJ2553】【BeiJing2011】禁忌 AC自动机 矩阵乘法 动态规划
我已经醉了。出题人卡精度卡常数都是未知生物啊!!!已经无心写题解,来个详细的~~~“网址”吧:http://wyfcyx.is-programmer.com/posts/78632.html我的代码是被卡精度的,我可以附上数据生成器。不要交我的代码,代码仅供参考思想。代码:#include #include #include #include #incl原创 2015-02-01 22:29:44 · 1719 阅读 · 0 评论 -
【POJ3272】Cow Traffic 拓扑DP
题意:给一个有向图,边严格由编号小的点到编号大的点,现在计数所有的极大路径,求每条边遍历次数的最大值。题解:正着扫一遍,倒着扫一遍,dp值相乘。#include #include #include #define N 5050#define M 50500using namespace std;struct KSD{ int v,next; long long cnt;原创 2014-11-07 16:42:20 · 1381 阅读 · 0 评论 -
【NOIP2000】乘积最大
吐槽:测点太弱!!!都不需要高精度。原创 2014-10-20 17:21:57 · 1578 阅读 · 0 评论 -
【NOIP1999】邮票面值设计 dfs
数据范围小得可怕,但是依然需要怒跑400ms。 题意我就不多说了,样例看懂了题也就看懂了,说说解题的大体思路。 DFS应该没疑问了,就是以M为物品种类上限传参然后一个个物品大小枚举,可以用背包check。 但是这样估计会TLE,而且我们又该如何枚举该加入的物品的价值呢?它的上限在哪里?于是我们不妨先在枚举前跑一遍背包,然后确定最大连续能取得值maxm,那么新加原创 2014-10-20 14:17:41 · 3276 阅读 · 0 评论 -
【HDU3341】AC自动机状态压缩DP,或者说hash枚举DP,-------出题人卡常数都是狗!!!!!
题意:给若干种个串,再给个主串,然后把主串打乱顺序,使得包含子串尽量多(一种可以有多个,两个之间可以部分重叠)。如第一组数据,ACGT,包含AC、CG、GT,三个,输出3。第二组数据A1A2A3,包含A1A2和A2A3两个“AA”,答案为2。其实我并没有AC。我被卡常数TLE了。。。实在不想写这种没意义的东西了。贴代码,待填坑。#include #include #原创 2014-11-26 18:04:43 · 1697 阅读 · 0 评论 -
【BZOJ1010】【HNOI2008】玩具装箱toy 动规_斜率优化
写得蛮认真的原创 2014-10-31 20:54:27 · 1345 阅读 · 0 评论 -
【POJ3691】DNA repair AC自动机+DP
题意:给出n个疾病基因片段,和一个完整基因,求最少修改多少个点能使基因不含疾病片段, 如样例数据:2AAAAAGAAAG 2ATGTGAATG4AGCTAGT0答案就是Case 1: 1Case 2: 4Case 3: -1意为AAAG中改一个字符就可以不含上面两个片段(任意A改成C或者T)。如果改不过来(如C原创 2014-09-17 18:14:13 · 1290 阅读 · 1 评论 -
【POJ1947】Rebuilding Roads,树形DP(本文分组背包做法)
左儿子右兄弟的树形DP?我靠,多大的代码复杂度啊?快来写一发分组背包版树形DP!!!【POJ1947】将你导入这个即将被背包占领的世界!原创 2014-09-25 09:50:31 · 2029 阅读 · 1 评论 -
【POJ2778】AC自动机,DP,矩阵乘法
题意:给出n个字串表示“缺陷基因”,然后让求长度为m的基因(4^m个)中有多少个不带病。题解:首先建立AC自动机,然后从每个节点开始选“ATGC”有四种往外转移的途径。如:ACG,C这两个基因建一个ACauto,然后转移矩阵为下。2 1 0 0 12 1 1 0 01 1 0 1 12 1 0 0 12 1 0 0 1然后原创 2014-09-17 08:13:08 · 1488 阅读 · 0 评论 -
POJ1185 炮兵阵地 状态压缩动态规划
求最大摆放个数,小模板。复制去Google翻译翻译结果原创 2014-08-21 18:33:40 · 1053 阅读 · 0 评论 -
【BZOJ1820】【JSOI2010】Express Service 快递服务 暴力DP
水题和水题解,但是应该是这道题目前最好的题解。原创 2014-12-17 16:37:48 · 1670 阅读 · 0 评论 -
【BZOJ1597】【Usaco2008 Mar】土地购买 斜率优化DP
x递减的斜率优化dp原创 2014-12-02 08:49:51 · 1354 阅读 · 0 评论 -
【POJ3612】【USACO 2007 Nov Gold】 1.Telephone Wire 动规
题意:给出若干棵树的高度,你可以进行一种操作:把某棵树增高h,花费为h*h。操作完成后连线,两棵树间花费为高度差*定值c。求两种花费加和最小值。题解:跟NOIP2014 D1T3很像。暴力动规是O(1*10^9)会T所以单调队列一下,每颗树扫两遍结束。完事,看水代码吧。#include #include #include #include原创 2014-12-22 09:01:48 · 2301 阅读 · 1 评论 -
【POJ2068】Nim DP博弈
题意:多组数据两人轮流操作,n轮一循环,给出总石子数和这n轮每次两人能取的石子上限(下限为1)。取到最后一颗者输。比如3 97 8 7 6 5 4 3表示一循环有三轮,可取的个数为:第一轮 先手8 后手7第二轮 先手6 后手5第三轮 先手4 后手3然后三轮每取完的话就进入下次循环。数据范围自己看去吧。题解:原创 2015-01-10 15:49:35 · 1158 阅读 · 0 评论 -
【BZOJ3866】The Romantic Hero “再不刷它就土了”系列
话说其实我并不知道它会不会变成土豪题。应该会吧?先刷了吧。题意:给出一个数列,然后取一个两个子序列A、B,使得A严格在B前面。然后要求A的异或和(^)等于B的与和(&)。题解:动规。注意判重。。没什么好注意的,不判重样例都过不去233。啊。下午好颓废~~~不爽啊~~~这道题算是随便签个到吧?代码:#include #in原创 2015-01-11 16:27:49 · 1218 阅读 · 0 评论 -
【BZOJ3156】防御准备 斜率优化DP
老规矩,方程什么都在注释里面。呃,其实写斜率优化不妨像我这么写,先把会TLE的裸dp交一遍,T了以后就把方程去掉(long long)这种类型转化神马的粘到注释里面,然后j放一边,i放一边,都有的放到i的一边,然后列出yxkb,然后最大上凸,最小下凹,简单分析,不对再改,然后来俩点判断判断叉积神马的,然后一遍ac。嘲讽一下:某同学POJ一道题调了一天至今还没过。。代码风格啊原创 2014-12-02 20:11:16 · 1504 阅读 · 0 评论 -
【BZOJ1002】【FJOI2007】轮状病毒 生成树计数推导。 Python代码
突然学了一小下Python算是勉强会写点了。至于这道题的题解,就是根据Matrix Tree定理,然后Kirchhoff矩阵高斯消元就好了,不过这道题如果消去中心点的行和列做的话,矩阵会很规矩,然后貌似“手算”可以推出公式(VFK Orz,手算……)VFK’s blog:http://vfleaking.blog.163.com/blog/static/1748076342原创 2015-01-09 09:05:35 · 1817 阅读 · 0 评论