摘要:http://acm.hdu.edu.cn/showproblem.php?pid=6153 首先相当于翻转两个串,然后求s2前缀在s1中出现的次数。 这是一个套路啦 首先把两个串结合起来,中间加一个'%'之类的分割 设dp[i]表示前缀1 i在本串中的出现次数和 那么从后开始dp,所有dp值一开始
阅读全文
摘要:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5015 设dp[cur][i][j]表示当前是第cur个顶点,自身状态是i(0或者1),爸爸
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1561 做树形dp比较小。 先上网学习下,总结下套路。 dp[i][j]表示在第i个节点,有j个名额选的时候的最大ans, 初始值dp[i][1 tot] = val[i],也就是每一个节点,有1、2、3、。。to
阅读全文
摘要:https://www.vijos.org/p/1002 设dp[i]表示跳到了第i个点,需要的最小的步数。 所以复杂度O(L * T), 不行 注意到T最大是10, 所以dp[i]最多只由10项递推过来。 考虑上面的那个情况,如果两个相邻的石头距离大于10,那么其实是没意义的,比如上面那两个空的1
阅读全文
摘要:https://www.hackerrank.com/contests/hourrank-21/challenges/sams-numbers 设dp[s][i]表示产生的总和是s的时候,结尾符是i的所有合法方案数。 那么dp[s][i]可以由dp[s - i][1 m]中,abs(i - k) <
阅读全文
摘要:http://codeforces.com/contest/814/problem/C 12ooyomioomioo21 o2 o 这题我是用dp解的,不过好像很慢,比赛的时候算了下不会mle,就没滚动数组了。 dp[i][k][ch]表示以第i位结尾,允许变化k次,所求的字符是ch时的最大连续数量
阅读全文
摘要:http://codeforces.com/contest/808/problem/E 不理解为什么dp = {cost, cnt1, cnt2}可以 而dp = {cost, cnt1, cnt2, cnt3}不可以 上面那个不可以的例子是: 但是这个dp是可行的,只是还有一个更新没实现起来。 d
阅读全文
摘要:http://swjtuoj.cn/problem/2387/ 设dp[cur]表示以cur这个节点为起点的时候,能走的最大贡献。 题目保证没环,也就是没回路。 感觉和树dp差不多了。 #include <cstdio> #include <cstdlib> #include <cstring> #
阅读全文
摘要:http://codeforces.com/contest/566/problem/F F. Clique in the Divisibility Graph time limit per test 1 second memory limit per test 256 megabytes input
阅读全文
摘要:https://www.luogu.org/problem/show?pid=2737#sub 先说一个结论:对于两个数p, q,且gcd(p, q) = 1(这个很重要,是条件来的)。他们不能组合成的最大的数字是pq - p - q 任何大于pq - p - q的数字,都能组合得到。 那么,题目中
阅读全文
摘要:http://oj.xjtuacm.com/problem/14/ wmq的队伍 发布时间: 2017年4月9日 17:06 最后更新: 2017年4月9日 17:07 时间限制: 2000ms 内存限制: 512M 描述 交大上课需要打卡,于是在上课前的几分钟打卡机前往往会排起长队。 平时早睡早起
阅读全文
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1202&judgeId=225600 这题看起来挺复杂,但是真正的dp还是挺好理解的。唯独是想不到的,应该把样例模拟一遍。 比如1、2、4、2 考虑第一个,只有“1”这一个子
阅读全文
摘要:http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5565 There are n courses in the course selection system of Marjar University. The i-
阅读全文
摘要:http://codeforces.com/contest/789/problem/C 首先按题目要求处理出dis数组。 那么对于任意一个区间,[L, R],是dis[L] - dis[L + 1] + dis[L + 2] .... + 那么怎么知道是+还是—呢? 注意到对于一个数,要么是正,要么
阅读全文
摘要:http://codeforces.com/contest/792/problem/C 这题奇葩题我居然用dp过了。 如果要模拟的话,可以用一个栈保存,保存每一个%3 = 2的pos,%3 = 1的pos,注意到题目是最多删除2个数,就能使得整个数%3=0了,如果要删除前导0的话就另外算。 那么贪心
阅读全文
摘要:http://codeforces.com/gym/100633/problem/B B. Dispersed parentheses time limit per test 2 seconds memory limit per test 256 megabytes input standard i
阅读全文
摘要:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2889 做这题的时候我第一感觉是直接dfs的dp,用dp[i][j]表示第一个数组处理到第i
阅读全文
摘要:https://www.hackerrank.com/contests/hourrank-18/challenges/super-six-substrings 能被6整除的数有一个特点,就是能同时被3和被2整除 那么也就是能整除3的偶数。 设dp[i][j]表示以第i位结尾的所有子串中,%3的余数是
阅读全文
摘要:https://vijos.org/p/1518 这题代码我基本是抄的,实在太难想了。但是也学到了一些东西。 比如:多叉树转二叉树存,这个细细一想,确实使得在dfs的时候,实现起来方便很多。 说一说具体 dfs的思路,思路和网上那个一模一样的,我刚学树形dp,可能上网看看总结下套路比较好。 设dfs
阅读全文
摘要:https://vijos.org/p/1688 看了下别人讨论的题解才想到的,不过方法和他的不同,感觉它的是错的。(感觉、感觉) 首先N只有1000, 如果能做到暴力枚举每一个节点,然后O(N)算出其贡献,那么也在允许的时间内。 假设我们现在对1这个节点进行计数,设dp[i]表示入侵i号节点和其所
阅读全文