随笔分类 -  动态规划-乱七八糟

摘要:题目链接 根据题目大致分析组成C的回文子串一定是由A中的子串和B中的子串组成的,而复杂度是允许我们枚举子串的。 所以可以想到区间$dp$,$dp[i][ii][j][j]$表示字符串$A[i,ii]$,和字符串$B[j,jj]$能否构成回文串。 如果$A[i]==A[ii]\&\&dp[i-1][i 阅读全文
posted @ 2020-03-26 14:35 祈梦生 阅读(151) 评论(0) 推荐(0)
摘要:题目链接 如果对于每个询问跑一次$dp$,那么$dp[i]$为断开$i$这棵子树的最小花费。 这样的复杂度为$O(n*m)$,过于臃肿。 所以我们要对于每次询问降低这次询问的复杂度。 我们可以发现$m$个关键点,最多有$m-1$个$lca$。 简单证明一下,如果有两个点,会有$1$个$lca$点,如 阅读全文
posted @ 2019-11-05 20:01 祈梦生 阅读(123) 评论(0) 推荐(0)
摘要:题目链接 算是一道比较明显的区间$dp$,但是状态不同往常。 $dp[0/1][i][j]$为拿完第$i$个和第$j$个范围内的所有球后停在左边/右边的最小亏损。 $dp[0][i][j] = min(dp[0][i][j], min(dp[0][i + 1][j] +亏损, dp[1][i + 1 阅读全文
posted @ 2019-11-05 18:39 祈梦生 阅读(151) 评论(0) 推荐(0)
摘要:题目链接 题意是说将$n$个数字分段使得每段贡献之和最小,每段的贡献为区间和减去前$\left \lfloor \frac{k}{c}\right \rfloor$小的和。 仔细分析一下可以知道,减去$2$个可以分成减去$2$次$1$个,所以就可以设一个$dp:$$dp[i]$为$1-i$位的最小和 阅读全文
posted @ 2019-10-15 19:28 祈梦生 阅读(181) 评论(0) 推荐(0)
摘要:题目链接 大致题意为将某个子串进行翻转后,使得不包含相同字符的字符子串长度最长。只能翻转一次或零次。 设一个子串的状态为包含字符的二进制。如子串为$abacd$,则状态为$00000000000000001111$。 根据分析可以得到,一个子串和另一个子串如果没有交集,则两个串可以经过一次翻转合并在 阅读全文
posted @ 2019-10-04 19:27 祈梦生 阅读(437) 评论(0) 推荐(0)
摘要:题目链接 因为题目说可以分组,并且是求最值,所以斜率优化应该是可以搞的,现在要想怎么排序使得相邻的数在一个组中最优。 我们按照宽$w$从小到大,高$h$从小到大排序。这时发现可以筛掉一些一定没有贡献的土地,什么样的土地没有贡献呢?这样的:$h[i]<=h[j]\& \&w[i]<=w[j]$,此时i 阅读全文
posted @ 2019-09-21 17:58 祈梦生 阅读(184) 评论(0) 推荐(0)
摘要:题目链接 题意,求出合法的长度为n的字典序第k小字符串,合法的定义为除了最后一位,每一位的取值范围为'A'到'A'+pos-1,而最后一位的取值范围'A'到当前字符串最大值+1。 队友tql,Orz 一开始就想爆搜,但是不知道如何判断当前位为X时的合法字符串个数。然后队友就莽过去了Orz。 大致做法 阅读全文
posted @ 2019-09-16 09:33 祈梦生 阅读(517) 评论(0) 推荐(0)
摘要:题目链接 CSLnb! 题意是求出给定集合中有多少个合法子集,合法子集的定义为,子集和>=总和-子集和$\& \&$子集和-(子集的子集和)<=总和-子集和。 其实就是很简单的dp,先将集合从大到小排序,dp[i][j]表示以a[i]为子集的最小值时,子集和为j的方案数。因为排序后保证遍历到的a[i 阅读全文
posted @ 2019-09-15 21:00 祈梦生 阅读(413) 评论(0) 推荐(0)
摘要:题目链接 大致题意:从根节点出发,在节点x有son[x]次等概率进入儿子节点,求到达最深深度的概率。son[x]为x节点的儿子节点个数。 又又又又没做出来,心态崩了。 下来看了官方题解后发觉自己大体思路是没错的,但是细节太弱了Orz。 大体思路:设dp[x]为以x为根节点,求到达最深深度的概率。先跑 阅读全文
posted @ 2019-09-09 09:30 祈梦生 阅读(380) 评论(0) 推荐(0)
摘要:题目链接 斜率优化的经典模型,将序列分成若干段,每段有一个权值计算方法,求权值和最大/小 暴力的dp $O(n^{2})$ dp[i]为1-i的序列的最优解。sum[i]为前缀和,$D(i)=ax^{2}+bx+c$ 转移为$dp[i]=\max_{j=0}^{i-1}dp[j]+D(sum[i]- 阅读全文
posted @ 2019-09-04 11:44 祈梦生 阅读(172) 评论(0) 推荐(0)
摘要:题目链接 2019.9.2更新 第二天睡醒想了想发现好像搜一遍就可以过,赛时写的花里胡哨的还错了,太菜了QAQ 原文 绝望ing!!! 搞了3个小时的D,到最后也没过,吃饭的时候突然想到错了,改一改就过了Orz. 遗憾!!错在求了拓扑序,要用a[n]->a[1],结果用成了n->1。要被队友骂死了Q 阅读全文
posted @ 2019-09-01 19:03 祈梦生 阅读(474) 评论(2) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意为从i级花费a元有p的概率升到i+1级,有1-p的概率降到x级(x<i),查询从L级升到R级的花费期望。 菜鸡才知道期望是有可加性的QAQ,即1-5的期望==1-2的期望+2-5的期望。 如果 阅读全文
posted @ 2019-08-22 20:03 祈梦生 阅读(267) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6635 题意是说一开始所有数都冻结,第i秒会解冻第ki个数,求每秒状态下的最长上上升子序列长度。 这种题一想添加操作就不好实现,所以干脆反着来,想删除操作。 从第n秒开始往前遍历,每次都会冻结一个数,这时 阅读全文
posted @ 2019-08-19 20:35 祈梦生 阅读(256) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6630 题意为求出1-n,n个数的全排列中有多少种方案满足第一位为x,第n位为y,且相邻数字绝对值之差不超过2。 我们可以预处理d数组,定义d[i]表示1-i个数的全排列中以1为第一位,i为第i位且相邻数 阅读全文
posted @ 2019-08-18 16:42 祈梦生 阅读(210) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6606 题意为在n个数中选m(自选)个数,然后把m个数分成k块,使得每块数字之和最大的最小。 求数字和最大的最小一般都是二分,二分后可以dp来判断合法,dp[i]表示第i个数字最大可以在的块数。则$dp[ 阅读全文
posted @ 2019-08-09 20:06 祈梦生 阅读(279) 评论(0) 推荐(0)
摘要:题目链接:https://www.cometoj.com/contest/59/problem/E?problem_id=2714 求期望并且一堆转移基本上就是期望dp了(叉腰 照常的设dp[i]表示i位置到n位置的期望步数。则我们所求的是dp[0]。 初始化dp[n]=0,因为n到n的期望为0。 阅读全文
posted @ 2019-08-08 20:40 祈梦生 阅读(257) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6578 计数问题想到dp不过分吧... dp[i][j][k][w]为第1-i位置中4个数最后一次出现的位置从大到小排列后为i>=j>=k>=w,但是会MLE,所以把i滚动掉。 但是这里有限制条件,把所有 阅读全文
posted @ 2019-08-05 18:19 祈梦生 阅读(190) 评论(0) 推荐(0)
摘要:题目链接 当时年少不懂期望$dp$,时隔一年看到这道题感觉好容易.... 定义状态$dp[i]$表示当前的$q$值为$i$时的期望,则当$q$值为$100$时$dp[100]=100/q$,这时后发现转移过程中有$1.5$这种小数出现,则把空间变为$1000$,q值也相应扩大$10$倍。 则转移方程 阅读全文
posted @ 2019-07-16 14:02 祈梦生 阅读(196) 评论(0) 推荐(0)
摘要:题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2004 看了很多大佬的博客才理解了这道题,菜到安详QAQ 在不考虑优化的情况下,先推$dp$式子,设$dp[i][j]$为最慢的公交车走到了第$i$站,$[i,i+p-1]$站的状态为$j$ 阅读全文
posted @ 2019-07-11 13:13 祈梦生 阅读(184) 评论(0) 推荐(0)
摘要:题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1047 题目虽然有一个n的限制,但求二维区间最值首先想到的还是RMQ,但是如果按照往常RMQ的写法,空间复杂度是O(n2*(log2(n)2)),而且需要两个求最大最小,所以会爆空间,大概也 阅读全文
posted @ 2019-07-07 20:43 祈梦生 阅读(206) 评论(0) 推荐(0)