DP
悭吝韶华
在学习Unity和图形学.
展开
-
[寒假刷题训练1]Codeforces Round #699 (Div. 2)E. Sorting Books
题意:有n本顺序排放的书,第i本书的颜色是aia_iai.你的目标是让所有颜色相同的书排在一起.你每次可以把一本书放到最右边,问最少需要操作多少次.原创 2021-03-06 00:05:31 · 146 阅读 · 0 评论 -
[典藏题记004]E. Erase Subsequences(DP)
非常nice的dp题。 状态是这样的: 另t=a+bt=a+bt=a+b dp[i][j]dp[i][j]dp[i][j]表示a字符串填了前iii个,bbb字符串填了前jjj个需要的最小∣s∣|s|∣s∣长度。 dp[0][0]dp[0][0]dp[0][0]=0 当然我们还需要枚举分界线,即我们想要的∣a∣|a|∣a∣,如此才可以确定∣b∣|b|∣b∣的前jjj个字符到底是什么。 此外,为了 状态转移方程: if(s[lens]==b[lena])dp[lena+1][lenb]=min(dp[lena原创 2020-08-04 09:05:28 · 168 阅读 · 0 评论 -
Codeforces Round #658 (Div. 1)B. Unmerge(DP)
观察后思考得出:对于一个数aia_iai,它后面那些连续的小于aia_iai得aja_jaj(j>i)(j>i)(j>i),一定是和aia_iai在同一个集合中。 因此找到LISLISLIS最长上升自序列,根据子序列中每个元素划分成若干个小部分,就变成了01背包问题。 #include<bits/stdc++.h> using namespace std; #define MAXN 4105 #define ll long long int n; int a[MAXN]原创 2020-07-23 16:20:30 · 123 阅读 · 0 评论 -
[典藏题记002]Codeforces Round #638 (Div. 2)E. Phoenix and Berries(DP)
传送门 由题意可得: 有两种水果A和B,对于体积为c的篮子,我们要使得装满的篮子个数尽可能多。 对于同一种水果,可以放在一起。 但对于两种不同的水果,要放在同一个篮子的条件是在同一行. 对于A和B水果混合而成的篮子,下文称之为混合篮。 1.对于每一行,A+B的水果混合最多装一篮,如果混合两篮以上其实是无意义的,因为如果混合到两个篮子以上表明在混合水果的篮子里有一种水果的个数至少为k,完全没必要参与混合。 2.对于当前行,知道从第一行开始到当前行所有剩余的A水果数量RemainARemain_ARemainA原创 2020-07-08 22:59:35 · 131 阅读 · 0 评论 -
Codeforces Round #652 (Div. 2)D. TediousLee详细题解(DP)⭐⭐⭐
这种不断分支散叶的结构。不如逆向思维,把第n项看成一个根节点+2个第n-1项+1个第n-2项连接而成。 记dp[i]表示第i项的答案,那么dp[1]=dp[2]=0,dp[3]=1;那么第n项的答案是否就是2个第n-1项+1个第n-2项的答案相加呢?显然不是,因为你还有个根节点没有考虑在内,如果要用上这个根节点,你还得用上前两项的根节点,前提条件是他们的根节点尚未染色。 设ans[i]为第i项的爪型数量。 显然ans[1]和ans[2]的根节点未被染色,ans[3]就可以用前两项的根节点一起染色做出1的贡献原创 2020-06-24 15:50:49 · 178 阅读 · 0 评论 -
Educational Codeforces Round 87 (Rated for Div. 2)E. Graph Coloring详细解析
有一个显然的性质,即1,3之间可以互换,我们不妨先归之为一类。2是另外一类。 给定一个无向联通图,如何用给定的01数量进行01着色? 不难发现,任意选定一点开始着色后,01的数量即可确定。 可以从任意一点开始dfs,深度为奇数的点为一部分,深度为偶数为另一部分。 有个坑点,还要判是否存在奇环(长度为奇数),这样的环无法进行01染色。 这样着色后会得到两个值,你可以任选其一为0,另一为1.。 现在把难度升级一下就是题目的要求,即为n个联通分量01数量和恒定的情况下,在n个联通分量中分配01。 假定对于第i原创 2020-05-24 13:36:56 · 230 阅读 · 0 评论