![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
Ada Chambers
在ICPC的泥潭中苦苦挣扎。。。
展开
-
hihocoder1457【后缀自动机+拓扑排序DP】
题目链接http://hihocoder.com/problemset/problem/1457题解所有乐章,用#隔开拼接起来建立sam。在自动机上按照拓扑序递推求出初始状态到当前点的不含#的路径数,然后用这个递推出初始到当前点所有子串的和。递推式见代码。注意我开始直接入度和递推都忽略自动机的#边。但这是不对的。因为这样忽略会导致有的点入度永远不是0,而不被算到。因为去掉#边可能导致某个入度和初始状态失去连接路径。所以拓扑就老老实实算上所有边弄,dp在忽略#边才对。AC代码#include&l原创 2020-08-15 12:12:37 · 246 阅读 · 0 评论 -
洛谷P3975【天津省选2015】(后缀自动机DP)
题目链接https://www.luogu.com.cn/problem/P3975题解此题非常经典且重要,是sam的函谷关,必须拿下。记录每个点endpos大小的方法是在parent树从下往上递推。开始的is_pre就是看看当前点与没有包含原串前缀,有的话,这个会在parent tree分叉时候丢掉。也就是当前节点并不是所有子节点的endpos的并集,并集还得加上那个前缀的结束位置才是当前点的endpos集合。求endpos大小的dp非常经典。dp数组表示从某个点出发沿自动机往下走的子串有多原创 2020-08-15 10:01:52 · 245 阅读 · 0 评论 -
最大子矩阵和(dp经典)
题目要求给定一个m行n列的整数矩阵A,试求矩阵A的一个子矩阵,使其各元素之和为最大。一维子段和要解上面的二维问题,得先会一维的。一维的很简单,设dp[i]表示前i个数中,一定包括i的最大子段和。显然方程dp[i]=(dp[i−1]<=0)?a[i]:(dp[i−1]+a[i])dp[i]=(dp[i-1]<=0)?a[i]:(dp[i-1]+a[i])dp[i]=(dp[i−1]<=0)?a[i]:(dp[i−1]+a[i])成立。然后一维的答案就是max(dp[i])。这样一维的原创 2020-05-30 20:49:30 · 2344 阅读 · 0 评论 -
hdu1024最大m个子段和问题(经典dp优化)
题目要求Now I think you have got an AC in Ignatius.L’s “Max Sum” problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you are faced with a more difficult problem.Given a consecutive number sequence S1, S2, S3, S4 … Sx,原创 2020-05-30 20:20:48 · 288 阅读 · 0 评论 -
codeforces1348EPhoenix and Berries简单DP
codeforces1348EPhoenix and Berries题解题面链接题意思路代码题面链接https://codeforces.ml/contest/1348/problem/E题意有n个菜园子,菜园子i有ai个红莓,bi个蓝莓。一个篮子装k个莓就满了,求最多装满几个篮子,每个篮子至少满足下面条件之一:1.篮子里的莓颜色相同。2.篮子的莓来自同一个菜园子。给定n,k和a,b序列,输出最大装满的篮子数。思路妈的这道题就是个简单的O(nkk)的暴力DP。我想多了。我开始的复杂想法:原创 2020-05-09 18:27:14 · 250 阅读 · 0 评论