![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
&稚始稚终
这个作者很懒,什么都没留下…
展开
-
D. Ezzat and Grid (线段树维护dp)
D. Ezzat and Grid题目传送门:D. Ezzat and Grid题目大意:就是给你很多行的01串,长度是1e9,每一行都有若干段的连续的1,使得给定的串集合美丽的条件是任意相邻两行的串至少有一个列是同时有1的,问你至少删除多少行使得这些01串是美丽的,并输出删除的方案?思路:比较好想到的就是维护dp[i]表示以第i行为结尾时构成的最大集合,dp[i]可以被第j行更新(第i行和第j行有同列为1),然后取一个max即可。由于每一行的1都是连续的,与是需要执行的是区间加和区间最值查询的操原创 2021-08-11 17:25:55 · 370 阅读 · 2 评论 -
Codeforces Round #699 E. Sorting Books(dp好题)
E. Sorting Books题目传送门:E. Sorting Books题目大意:书架上有n本书,每本书有自己的颜色ai,现在有一个操作是将一本书取出并放在书架的最右边。问最少需要多少次操作可以使颜色相同的书放在一起。思路:移动的很难考虑,那换个角度不防考虑最大化不移动书的数量。设f[i]表示i~n这些书中最大的不移动的数量。1.如果i这个地方的书要动的话那么很简单f[i]=f[i+1]。2.如果i这个地方不动的话,那么就是让i~n中所有颜色为a[i]的书都不动,动其他书。用R[x]表示原创 2021-02-08 22:10:31 · 301 阅读 · 1 评论 -
状压DP入门详解
(最近做到了状压dp的题目,自己不会,于是学习了一手)1.位运算(基础)名称符号运算法则举例按位与a&b两者同时为1则为1,否则为000101&11100=00100按位或a l b有1为1,无1为000101 l 11100=11101按位异或a^b相同为0,不同为100101^11100=11001按位取反~a是1为0,是0为1~00101=11010左移a<<b把对应的二进制数左移b位0010原创 2020-09-04 16:48:28 · 3689 阅读 · 2 评论 -
肥猪的钢琴床(dp好题)
肥猪的钢琴床题目传送门:肥猪的钢琴床题目大意:给你一个01序列,要求所有的1连在一起,你可以把0改成1,你也可以把1改成0。问最少的操作次数是多少。思路:由题目我们马上就能想到最后的序列一定是0000111110000这种形式的。明显分成了三段,第一段的0,第二段的1,第三段的0。每个位置都可能是这三段中的一段。我们用dp [ i ] [ 0 ],dp [ i ] [ 1 ],dp [ i ] [ 2 ]表示位置i是不同段中的最少操作的次数。可以得到递推式dp [ i ][ 0 ] = d原创 2020-12-06 22:27:05 · 2172 阅读 · 4 评论