DP
文章平均质量分 76
cervoliu
这个作者很懒,什么都没留下…
展开
-
【JZOJ 5990】Bear
DescriptionlinkAnalysis朴素dp是逐行逐格转移注意到nnn较小,mmm较大一个显然的想法是看看能否逐列逐格转移,很可惜不行,因为考虑棋盘覆盖顺序,行的限制优先于列但是考虑行和列覆盖情况什么时候会冲突,只可能是形如2*2的小正方形里,左下和右上对右下格覆盖的时候冲突了,并且我们知道右上的优先级更高这启示了我们可以以左往右逐个斜线,每条斜线再从上到下的顺序来dp,记...原创 2019-01-07 21:47:20 · 227 阅读 · 0 评论 -
【JZOJ 5377】 开拓
Description 30%中规中矩的dp啊 可以发现某一个时刻的能力值只取决于他前面开采和维修的次数 设f[i][j][k]表示做到第i个前面开采,维修次数分别是j,k的答案智商型dp之前明明做过类似的题,比赛的时候智商不知道被谁吃了 试一下写出某一种决策的答案 然后会发现从后往前dp就完全把前面的影响消除了,只用记录一维就好#include<ctime>#include<cst原创 2017-10-02 15:06:43 · 305 阅读 · 0 评论 -
【Typical】几道题的极简主义题解
JZOJ 5391ρ有一个二分连通无向图,X 方点、Y 方点均为n个(编号为1 ~ n)。 这个二分图比较特殊,一个Y 方点的度为2,一条黑色边,一条白色边。。 所有黑色边权值均为a ,所有白色边权值均为b 。 选择一个X 方点,代价为连接的所有边的权值之和。 激活一个Y 方点,需要选择至少一个与之相邻的X 方点。 现在,ρ想激活每个Y 方点,他想知道最小总代价Key:将Y方点所连接的两个原创 2017-10-02 16:11:11 · 454 阅读 · 0 评论 -
【JZOJ 5347】 遥远的金字塔
Description Analysisf[i][j]=i∗a[i]+mink<j{f[i−1][k]−k∗a[i]}f[i][j]=i*a[i]+min_{k<j}\{f[i-1][k]-k*a[i]\} 这个dp不解释,too simple 显然是可以斜率优化的,但是可以分治做,大致作为思路mark下 现在要求f[i][1到n]f[i][1到n],我们知道转移的决策有单调性 分治,求出原创 2017-09-06 21:48:15 · 354 阅读 · 0 评论 -
【JZOJ 6008】Sequence/【JZOJ 5132】 子序列
Description 40%dp,很简单所以不说了100%小写字母只有前9个,考虑抓住这个突破口 仔细观察dp式子 f[i][s[i]]=1+∑chf[i−1][ch]f[i][s[i]]=1+\sum_{ch}f[i-1][ch] f[i][ch]=f[i−1][ch]f[i][ch]=f[i-1][ch] 这可以写成矩阵的形式,我们可以预处理出矩阵前缀积,逆矩阵前缀积 O(n103原创 2017-08-23 19:13:37 · 391 阅读 · 0 评论 -
【typical】【JZOJ 5271】 神奇的救火现场
Description Analysis比较容易想到的是可撤销贪心的解法,老套路了 可能我脑回路清奇,或者是中了这题的毒,想的是另一个nlogn的做法,和那个链接的题的分析思路差不多 首先可以想到一个很simple的dp,排好序,从左到右,设f[i][j]f[i][j]表示第i个车匹配第j个栓的最小花费 显然存在一种最优解使得匹配不交叉,那么此处存在状态转移的单调右移性 f[i][j]=m原创 2017-08-15 12:58:27 · 353 阅读 · 0 评论 -
【JZOJ 3773】 小 P 的烦恼
Description问题是这样的,高代老师近期要组织班上同学一起去漂流,漂流可以看做是在一张 n 个点 m 条边的有向无环图上进行的,点编号从 0 到 n-1 ,表示景点; 边是连接各景点的一定长度的河道。同时,定义编号为 s 是起点而 t 是终点。我们不妨把从 s 点到 t 点不论走什么样的路径都需要经过的边称为桥, 这些桥由于地势险要所以是危险的。现在高代老师有两条长度为 l 的安全绳,他希望原创 2017-08-08 17:04:52 · 302 阅读 · 0 评论 -
[JZOJ4940]前鬼后鬼的守护/[JZOJ4623]搬运干草捆
神题力荐! 详解戳这里(Author:a_crazy_czy) 转载是因为自己写不出这么高质量的blog,又必须Mark下来 同时也贴上另一种解法 Author: YxuanwKeith转载 2017-07-16 11:43:42 · 457 阅读 · 0 评论 -
【bzoj 4870】组合数问题
Description求∑i=1nCik+rnkmod p\sum_{i=1}^nC_{nk}^{ik+r} mod\ p n<=1e9,k,r<=50,2<=p<=2^30-1Analysis考虑所求和式的组合意义 • 从 nk 个物品中,选出模 k 余 r 个物品的方案数 • dp[i][j]dp[i][j] 表示考虑了前 i 个物品,选出来的物品数模 k 为 j的方案数 • dp[i+原创 2017-07-09 22:18:13 · 373 阅读 · 0 评论 -
【JZOJ 5178】 So many prefix?
Description给出一个长度为N(N<=200000)字符串,求其所有长度为偶数的前缀在串中出现次数之和SAZZ选手的ZZ方法 弄出height之后,从rank[1]的位置往前后扫,O(n)KMP+dp设f[i]表示s[1~i]的答案 对于每个i,只用计算以i结尾的子串,于是弄出kmp的next f[i]=f[next[i]]+[i为偶数] O(n)原创 2017-06-28 12:37:28 · 402 阅读 · 0 评论 -
【BJOI2014】路径
Description在一个N个节点的无向图(没有自环、重边)上,每个点都有一个符号,可能是数字,也可能是加号、减号、乘号、除号、小括号。你要在这个图上数一数,有多少种走恰好K个节点的方法,使得路过的符号串起来能够得到一个算数表达式 算数表达式。路径的起点和终点可以任意选择。所谓算数表达式 算数表达式,就是由运算符连接起来的一系列数字。括号可以插入在表达式中以表明运算顺序。注意,你要处理各种情况,比原创 2017-06-25 08:01:44 · 356 阅读 · 0 评论 -
正整数拆分问题
Problem 1 求将正整数N无序拆分成若干个不大于M的正整数的方案数设f[i][j]f[i][j]表示ii拆分成若干个不大于jj的正整数的方案数 考虑第ii个数的大小是否为jj f[i][j]=f[i−j][j]+f[i][j−1]f[i][j]=f[i-j][j]+f[i][j-1] 是为前者,否为后者 显然可以将空间优化成一维 时间复杂度为O(nm)O(nm),空间复杂度O(原创 2017-07-03 16:35:58 · 2757 阅读 · 0 评论 -
【JZOJ 5220】 C
Description给定A,B两个串,设LCS(A,B)=n 求A中所有长度为nn的子序列(共2^n个)中,有多少个是B串的子序列 串长<=1000Analysis相当于在A中选n个位置,与B中n个位置进行匹配 设状态(x,y,z)(x,y,z)表示A匹配到x,B匹配到y,已匹配个数为z的方案 考虑A中第x个选不选,不选转移到(x+1,y,z) 选转移到(x+1,p+1,z+1),p是b原创 2017-07-10 16:03:19 · 290 阅读 · 0 评论 -
【线段树维护单调栈】【JZOJ 5402】 God Knows
Description DP左边->上边,右边->下边(题目反人类) 设f[i]表示上边最后一个匹配是(i,pi),需要找到一个j < i,且j能转移i,且f[j]尽量小 直接暴力n^2就有60分了100%DP优化把决策画出来(在平面图上,x轴为i,y轴为pi),观察哪些 j 能转移到 i 首先pj>pi的 j 可以忽略了 对于剩下的,发现只有从左到右一个单调递减的栈里的 j 才能转移到原创 2017-10-12 21:05:18 · 1128 阅读 · 0 评论 -
【状态设计的力量】【JZOJ 5411】 友谊
DescriptionFlowey 是一朵能够通过友谊颗粒传播LOVE 的小花.它的友谊颗粒分为两种, 圆粒的和皱粒的,它们依次排列组成了一个长度为2m 的序列.对于一个友谊颗 粒的序列,如果存在1<=i< j <=2m,满足以下条件: 1 i 为偶数,j 为奇数 2 第i 颗友谊颗粒和第j 颗友谊颗粒同为圆粒或同为皱粒 3 第i 颗友谊颗粒和第j 颗友谊颗粒都还没有被使用过 那么,就可原创 2017-10-23 08:01:04 · 244 阅读 · 0 评论 -
【bzoj 3622】【JZOJ 5429】 排列
Description给两组 n 个数 a[], b[] ,保证数字互不相同,问有多少种将它们配对的方式,使得 a[i] > b[i] 的对数恰好为 k 1<=k<=n<=4000Analysis看到恰好,这肯定很难做的,考虑套路:转化成至少再减去多的 那么我们可以开始愉快地dp 设f[i][j]表示上面到第i个数,保证形成了j个贡献的方案数 f[i][j]=f[i−1][j](不匹配)+f原创 2017-10-31 16:39:05 · 265 阅读 · 0 评论 -
tree
Description给你一棵n个点的树,你需要在树上选择恰好m条点不相交的,点数至少为k的路径,使得路径所覆盖的点权和尽可能大。求最大点权和。数据保证有解。n&lt;=1.5e5凸优化+长链剖分 存档题Code#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;algorithm&gt;#include&原创 2019-01-10 16:27:17 · 219 阅读 · 0 评论 -
【AGC017 F】ZigZag
Description有一个n行的三角形,第i行有i个格子。第i行第j个格子用(i,j)表示。从(i,j)可以到达(i+1,j)和(i+1,j+1)。现在要确定m条从(1,1)出发到第n行的路径。设第a条路径走到的第b个格子是(b,X[a,b]),对于任意a < b,不能存在i,使得X[a,i]>X[b,i]。同时还有K条形如(a,b,c)的限制,表示第a条路径第b个点到第b+1个...原创 2018-02-28 12:27:08 · 337 阅读 · 0 评论 -
【WC2018】州区划分
Description原题链接部分分容易想到O(3n)O(3n)O(3^n)的子集DP fs=∑t⊆sft∗gs−tfs=∑t⊆sft∗gs−tf_s=\sum_{t⊆s}f_t*g_{s-t} 做完了fsfsf_s之后还要让fs=fs∗invsfs=fs∗invsf_s=f_s*inv_s100%发现上面那个方程就是一个子集卷积,只不过会自己卷自己的。 回顾子集卷积...原创 2018-03-07 22:42:37 · 902 阅读 · 0 评论 -
【AGC013E】Placing Squares
Description给你一个大小为m的集合S,S中不包含n。 现在对于一个正整数序列 a[1]…a[k],如果序列之和为n,且不存在s[i]属于集合S就是合法的,s表示a的前缀和。 这样的序列贡献是∏ki=1a[i]2∏i=1ka[i]2\prod_{i=1}^ka[i]^2,求所有合法序列的贡献和。 m<=10^5,n<=10^9Analysis首先有个na...原创 2018-02-15 23:20:02 · 377 阅读 · 0 评论 -
【AGC009 E】Eternal Average
Description请构造若干k叉树,使得每颗均有n+m个叶子,有n个叶子点权为0,m个叶子点权为1,对于非叶子点权为儿子点权的平均数。 问最多构造多少k叉树,使得任意两颗根节点点权不同?n,m,k<=2000 (n+m-1) mod (k-1)=0Analysis思路顺序: 1.问题模型转化成kkk叉树 2.注意到根节点权值为∑ikdep1[i]∑ikdep...原创 2018-02-27 12:34:20 · 417 阅读 · 0 评论 -
【bzoj 2286】【SDOI2011】消耗战
Description在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达。现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军胜利在望。已知在其他k个岛屿上有丰富能源,为了防止敌军获取能源,我军的任务是炸毁一些桥梁,使得敌军不能到达任何能源丰富的岛屿。由于不同桥梁的材质和结构不同,所以炸毁不同的桥梁有不同的代价,我军希望在满足目原创 2017-12-30 13:44:11 · 338 阅读 · 0 评论 -
浅谈决策单调性在1D1D动态规划中的运用
转自alan_cty 1D1D动态规划是指状态数为O(n),每个状态的决策数为O(n),直接求解的复杂度为O(n^2)的动态规划方程。但这种方程往往都能够通过一些合理的组织和决策优化到O(n log n)甚至O(n)的。 由于博主比较弱所以只分析下面几种情况(其他的等会了有时间再补)1.斜率优化很奇怪我最开始接触的竟然是这个效率最高的但适用性最窄的优化 具体来讲,每一个决策可转载 2018-01-10 22:17:19 · 414 阅读 · 0 评论 -
Subsequence
Description给出两个由小于等于 k 的正整数构成的数列 A 与 B,长度为 n 与 m 现在需要一个由小于等于 k 的正整数构成的数列 C,使得 C 既不是 A 的子序列,也不是 B 的子序列 请求出 C 的最小长度 对于 100% 的数据,满足 n,m,k ≤ 4000,1 ≤ Ai,Bi ≤ k歪想法引申的一个有趣问题比赛的时候我曾经往计数的方向思考过,即枚举答案L原创 2018-01-12 17:05:01 · 1171 阅读 · 0 评论 -
【JZOJ 5485】 字符串
Description一个字符串的权值是这个串包含的不同字符个数。 给定一个长度为n的字符串,把它分为k个连续非空字段,每个字符必须在某一段中,最小化字符串的权值和。 对于100%的数据,1<=k<=n<=100,000。DP很容易想到用f[i][j]表示到第i个位置,选了k个的最小权值和 然后就n^3巧妙设状态可以发现如果分了jj段,那么最优决策下最小权值和一定落在[j,j+26]的范围内原创 2017-11-27 22:32:50 · 312 阅读 · 0 评论 -
【Atcoder Regular Contest 085F】 NRE
Description设有一长度为n的初始每个位置均为0的序列A。再给定一个长度为n的01序列B。 有Q个特殊的区间[li,ri],你可以选择将A中li到ri这些位置都变为1,当然你可以选择不变。 现在你需要最小化A,B的海明距离。即最小化对应数值不同的位置数目。 Analysisans=∑i[a0b1]+[a1b0]ans=\sum_{i}[a0b1]+[a1b0](用axbyaxby表示a原创 2017-12-02 17:08:35 · 320 阅读 · 0 评论 -
【口胡】【坑:对偶问题】【Codeforces 671D】【JZOJ 5369】 幽雅的绽放吧,墨染之樱
Description给定一颗N个节点的树,现在有M个工人,每个工人有三个属性ui,vi,Ci,表示这名工人可以维修节点ui到节点vi的所有路径,花费为Ci,并且保证vi是ui的祖先(祖先后代链)。问最少花费多少使得树上的每条边都有人维修。 N,M≤300000 Ci≤10^9Analysis设f[i]表示做完i的子树及i向其父亲的边,所需最小代价 考虑一条祖先后代链的贡献,链顶为x,链底为原创 2017-10-31 22:31:05 · 386 阅读 · 0 评论 -
【JZOJ 5415】 公交运输
Description城市中有一条长度为n的道路,每隔1的长度有一个公交车站,编号从0到n,学校在0号车站的位置。其中每个公交车站(除了n号车站)有两个属性ci和vi,代表从这个公交车站出发的公交车的性质。ci代表这个从i出发的公交车,相邻两个停靠站之间的距离。vi表示每坐1站的花费。 注意,一辆公交车出发后会向n号车站的方向行进。同时,一名乘客只能从起点站上车,但可以从任意停靠站下车。校庆志愿者原创 2017-10-24 22:01:13 · 376 阅读 · 0 评论 -
【JZOJ 5219】 B
Description n<=1000Analysis省选组的一道水题 模型看起来要么dp要么分治的嘛,然后我一开始是想的分治,?隔开许多个块,然后每个块互不影响,单独处理 但是处理也要dp啊,还不如直接dp 容易发现,真实值不重要也不必要,重要的是相对大小 设f[i][j]f[i][j]表示确定完前ii个数,第ii个在前ii个里从小到大排第jj的方案数 转移显然,可以用前缀和优化 O原创 2017-07-10 15:54:29 · 325 阅读 · 0 评论 -
【GDOI 2017 day2】小学生语文题
Description给你一个A串一个B串,长度都为N A固定,B中的字符可以且仅可以从后往前拖 求最小拖动次数,使得B串与A串相等,并输出每一步的拖动方案 保证有解 N<=2000 10组数据,一秒时限 GDOI2017day2T3Analysis这种题强烈感觉像DP,但是比赛的时候想不到 这种智商题非常好,尤其喜欢这道题的idea,模型经典而有变化,码量小而有思维含量 考虑最小拖原创 2017-05-08 20:09:25 · 973 阅读 · 0 评论 -
【JZOJ 3052】 剪草
Description有N棵小草,编号0至N-1。奶牛Bessie不喜欢小草,所以Bessie要用剪刀剪草,目标是使得这N棵小草的高度总和不超过H。在第0时刻,第i棵小草的高度是h[i],接下来的每个整数时刻,会依次发生如下三个步骤:(1)每棵小草都长高了,第i棵小草长高的高度是grow[i]。 (2)Bessie选择其中一棵小草并把它剪平,这棵小草高度变为0。注意:这棵小草并没有死掉,它下一秒还会原创 2016-09-05 12:47:15 · 441 阅读 · 0 评论 -
【JZOJ 4771】 爬山
Description国家一级爬山运动员h10今天获得了一张有着密密麻麻标记的地图,在好奇心的驱使下,他又踏上了去爬山的路。 对于爬山,h10有一个原则,那就是不走回头路,于是他把地图上的所有边都标记成了有向边。他决定从点S出发,每到达一个新的节点他就可以获得一定的成就值。同时h10又是一个很珍惜时间的运动员,他不希望这次爬山的成就值白白浪费,所以最后他一定要在一个存档点停下,保存自己的成就值。原创 2016-09-10 16:13:57 · 415 阅读 · 0 评论 -
【JZOJ 3072】 掷骰子
Description太郎和一只免子正在玩一个掷骰子游戏。有一个有N个格子的长条棋盘,太郎和兔子轮流掷一个有M面的骰子,骰子M面分别是1到M的数字.且掷到任意一面的概率是相同的.掷到几.就往前走几步.当谁走到第N格时,谁就获胜了。游戏中还有一个规则“反弹”.就是当一位选手要走到第N格外时.他就会后退(就像飞行棋进营一样)。假设现在一位追手在A格.当他掷出B时:1.A+B<N,走到第A+B格,2.A+原创 2016-08-18 22:27:30 · 555 阅读 · 0 评论 -
【JZOJ 3083】 塔(加强)
Description今天你瞄准了下述的好玩的游戏: 首先是主角:塔。你有N座塔一列排开。每座塔各自有高度,有可能相等。 你每次可以选择相邻的两座塔合并在一起,即这两座塔的高度叠加后变成了同一座塔。然后原本分别与这两座塔相邻的塔变得与这座新的塔相邻。 你的目标是在使用最少的操作次数在游戏的最后获得一列塔,这些塔的高度从左到右形成一个不下降的数列。对于100%的数据 1原创 2016-08-18 17:05:27 · 419 阅读 · 0 评论 -
【JZOJ 4710】 Value
Description Analysis一开始dp想偏了,改了还是错的。。 好吧dp水平不够 认了。。。 首先,价值其实就是∑vi−∑(i−1)∗wi\sum v_i-\sum(i-1)*w_i 显然应该是先选代价小的更优。 尝试dp,设f[i][j]f[i][j]表示前ii个数中选了jj个的最大价值。f[i][j]=max(f[i−1][j],f[i−1][j−1]+???)f[i][原创 2016-08-17 20:42:00 · 298 阅读 · 0 评论 -
【JZOJ 4595】 String
Description有两种字符串A,B。长度分别为n,m。现在需要在S里面有序地选出k个子串,且在B中出现的顺序与这k个子串的顺序相同。问这k个子串最大的长度和。 吐槽:题意不清。 有序地的意思是子串从左到右选 选的各个子串不能重复、重叠 100% n,m<=1000 k<=10Analysis一眼DP 可是DP有技巧 设f[i][j][k]f[i][j][k]表示AA到ii,BB到j原创 2016-07-08 14:35:57 · 356 阅读 · 0 评论 -
【Codeforces 678E】【JZOJ 4648】锦标赛
Description403机房最近决定举行一场锦标赛。锦标赛共有N个人参加,共进行N-1轮。第一轮随机挑选两名选手进行决斗,胜者进入下一轮的比赛,第二轮到第N-1轮再每轮随机挑选1名选手与上一轮胜利的选手决斗,最后只剩一轮选手。第i名选手与第j名选手决斗,第i名选手胜利的概率是a[i][j]. 作为一号选手的富榄想知道如何安排每轮出场的选手可以使得他获胜的概率最大,并求出这个最大概率。 对于1原创 2016-07-17 16:25:31 · 617 阅读 · 0 评论 -
【JZOJ 3463】 军训 training
DescriptionHYSBZ 开学了!今年HYSBZ 有n 个男生来上学,学号为1…n,每个学生都必须参加军训。在这种比较堕落的学校里,每个男生都会有Gi 个女朋友,而且每个人都会有一个欠扁值Hi。学校为了保证军训时教官不会因为学生们都是人生赢家或者是太欠扁而发生打架事故,所以要把学生们分班,并做出了如下要求: 1.分班必须按照学号顺序来,即不能在一个班上出现学号不连续的情况。 2.每个学生原创 2016-06-25 14:23:42 · 813 阅读 · 0 评论 -
【JZOJ 4599】 西行妖
Description在幻想乡白玉楼有一棵终年不开花的樱树叫西行妖,西行寺幽幽子曾经为了让它开花而大量收集春度,然后被城管教训了一顿… 现在,幽幽子得到城管的允许,收集了S点春度,让西行妖重新开花。 西行妖可以被看成是一棵有n个节点的树,每个叶子节点被分配了1点春度就能开花(幽幽子不会无意义地使用她的春度,于是最多只会给同一个叶子节点分配1点春度),对于非叶子节点i,如果它有至少有1个儿子开花,原创 2016-07-14 16:08:50 · 526 阅读 · 0 评论 -
[JZOJ 3427] 归途与征程
Description对于100%的测试点,1<=N<=100,1<=M<=100000。Analysis我们可以把A串视为一些串中间隔着一些星号。 显然,A串头尾都没有星号是有星号的特殊情况。因为无星号可以跳过头尾的串变成头尾都是星号。 下图,上者A,下者B。 我们可以对于A串中的小串与B串做一次KMP,搞一个bz[i][j]bz[i][j]表示第i个小串是否能与B的第j个位置往后相应长原创 2016-06-01 12:41:58 · 630 阅读 · 0 评论