首页 > TAG信息列表 > Catching
P2690 Apple Catching G
题目链接 首先来个爆搜再说。 定义 dfs(int i,int pre,int ans) 表示当前是 \(i\) 时间,上一次在 \(\rm pre\) 苹果树,已经移动 \(\rm ans\) 次的最大苹果数量。 如果 i>t ,返回 \(0\) 即可。 如果上一次苹果树的位置跟当前一样,就不用移动,返回dfs(i+1,a[i],ans)+1。 如果上一次跟当Catching Cheaters CodeForces - 1446B
原题链接 考察:线性DP 错误思路: 求出最长公共子序列再dfs回溯枚举长度. 错误原因: 不一定只存在一个最长公共子序列.比如样例2. 正确思路: 是dp(...),定义 f[i][j] 为以1~i,1~j构成的最长公共子序列的最大S值,且A子串以i结尾,b子串由j结尾.这里其实类似最大连续子段Codeforces1446 B. Catching Cheaters(dp,最长公共子序列)
题意: 解法: 令d[i][j]表示S串以i结尾的子串,T串以j结尾的子串,的最大值. 1.如果s[i]==t[j],那么可以匹配,d[i][j]=d[i-1][j-1]+2. 2.如果s[i]!=t[j],那么不能匹配,此时对于d[i-1][j]和d[i][j-1], 只会增加一个子串的长度,LCS不会变化,因此d[i][j]=max(d[i-1][j],d[i][j-1])CodeForces 1447D :Catching Cheaters 字符串DP
传送门 题目描述 给我们两个字符串,让我们从中选出两个字串,算出它们的最大公共子序列长度。然后将它乘4在减去两个字串的长度。问你这个数最大是多少。 分析 我们可以把这个式子转换为2 * LIS - a的剩余长度 - b的剩余长度,然后就可以设计dp方程了 如果当前这一位匹配了,那么答codeforces 1446B - Catching Cheaters (dp)
题目链接:https://codeforces.com/problemset/problem/1446/B \(LCS\) 的改版, \(f[i][j]\) 表示以 \(i,j\) 结尾的最大答案, 如果 \(A[i] == B[j]\) ,那么贡献就会加 \(2\), 否则贡献会减 \(1\) #include<cstdio> #include<cstring> #include<algorithm> #include<iostream&Codeforces Round #683 (Div. 2, by Meet IT) D. Catching Cheaters (DP)
题意:给你两个字符串,每次取它们的子串C和D,然后求LCS,得到的贡献为\(4*LCS(C,D)-|C|-|D|\),求最大贡献. 题解:首先应该了解\(O(n^2)\)的LCS的dp写法,然后在此基础上稍加改动,对于子串\(C\)和\(D\),如果\(c[i]=d[j]\),那么他们的LCS应该\(+1\),长度也分别\(+1\),所以\(dp[i][