Three displays CodeForces - 987C (dp)】的更多相关文章

C. Three displays time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output It is the middle of 2018 and Maria Stepanovna, who lives outside Krasnokamensk (a town in Zabaikalsky region), wants to ren…
题目传送 先给出设计dp的结论: dp[i][j]:以第i个位置.以rankj的数拓展出去的方案数.意会一下,我实在想不好语言-- 其中所谓rankj=真·rank%11 找到拓展的规律,转移也就顺理成章了.不妨先看1-9拓展到的二位数里有哪些是合法拓展: \[Rank1\%11=1:所以数字1\rightarrow10\] \[Rank2\%11=2:所以数字2\rightarrow20\ 21\] \[--\] \[Rank9\%11=9:所以数字9\rightarrow90\ 91\ 92…
传送门 与Codeforces1107G一起食用 思路 想到要用dp--然后常规地设dp[i]为推倒前i个牌的最小花费 有两种情况:一是当前这个推,二是不推而被别人推.对于第一种,需要找到这个左推(因为扫到这里他是最后一个所以不用右推)的最远处,于是有了预处理每一位的最左边:对于第二种,巨弱鲁莽地优先队列搞了,看大佬代码直接单调栈快了我好几倍,菜不成声. const int maxn = 25e4 + 5, maxm = 1e7 + 5; int n, m, k[maxn], q, tot, h…
怎么就没人解释一下为啥用b排序可以保证正确性呢……太菜了,理解了好久. 时间流逝价值会丢失的背包,类似题洛谷1417 本题与洛谷1417不同之处在于流逝是有截止的. 1.这个dp[j]的含义是:最后跑路时欠了j个费所得到的最大钱数. 2.假设是不排序的,直接去背包,考虑两种转移,一种是选了当前这个以后到最后时欠的个数并不增多(即这个的k天都还了):另一种是这个也没还完. 3.如果直接都还了那顺序完全无所谓了,但是如果有这么几个都是最后要欠的,那么显然第一个要支付0天(即提钱当天就跑路了),第二个…
1.答案要取连续的区间疯狂暗示线段树. 2.外层枚举r,内层枚举l显然过于暴力. 3.考虑内层的优化.dp[i]:以第i位为结尾的答案(长度大于1的).dp[i] = max(第一种情况,第二种情况).解释一下,首先我们可以做到求出i前面gap[j] > gap[i],j < i最大的j的位置pos,然后其中第一种情况为:自力更生,区间pos-i内gap[i]是最大的.这种情况可以使用线段树logn得到区间内最大右子段和:其中第二种情况为:寄人篱下,区间从pos前的某一位一直到i,即最大的ga…
题目链接:http://codeforces.com/contest/682/problem/D 思路:dp[i][j][l][0]表示a串前i和b串前j利用a[i] == b[j]所得到的最长子序列, dp[i][j][l][1]表示a串前i和b串前j不利用a[i] == b[j]所得到的最长子序列, 所以,dp[i][j][l][0] = max(dp[i-1][j-1][l][0] ,max(dp[i-1][j-1][l-1][0],dp[i-1][j-1][l-1][1])) + 1 d…
题目链接:http://codeforces.com/problemset/problem/666/A 思路:dp[i][0]表示第a[i-1]~a[i]组成的字符串是否可行,dp[i][1]表示第a[i-2]~a[i]组成的字符串是否可行,显然dp[len-2][0(1)]必定不可行. 转移方程: dp[i][0] = dp[i+3][1] || dp[i+2][0] && (tmp1 != tmp2); dp[i][1] = dp[i+2][0] || dp[i+3][1] &…
据说这题是种dp的套路?然后被我国红名神仙(南大Roundgod)贪心了,不过思路上非常相近了,故而可贪吧. 设的dp[i][0]是:如果把第i个数放在上升序列里了,那么下降序列结尾的那个最大是多少:同理,dp[i][1]是:如果把第i个数放在下降序列里了,那么上升序列结尾的那个最大是多少. 个人yy,这样设的巧妙之处大概就是我们想转移第i个时,需要比较一下大小才能看第i个能不能插入某个序列,而你发现这个dp明明含义是把i放上升里了,记录的却是下降的结尾——这就使得我们拿到i+1个时,想放上升时…
要点 寻找最多边的匹配的结论:贪心地从叶子开始找,最后答案都是奇数层下边的那条边. 设\(dp[i][j]\)表示当前长度为\(i\),平衡度为\(j\),平衡度为(数量减去)数量. 增加左右括号转移,并将奇数层合法的加到ans中. #include <cstdio> const int maxn = 1005, mod = 1e9 + 7; int n; long long dp[maxn << 1][maxn << 1], ans; int main() { sca…
LightOJ 1033  Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730#problem/A 题目: Description By definition palindrome is a string which is not changed when reversed. "MADAM" is a nice example of palindrome.…