07 2016 档案
摘要:一个长度为n的序列,删除任意长度为l的连续子序列后,求剩下的序列的最长公共子序列。 先求出以第i个元素为开始的LIS的长度,再一次循环,对所要求的结果更新 }
阅读全文
摘要:枚举,每次增加点,删除点 }
阅读全文
摘要:先做拓扑排序,再bfs处理 }
阅读全文
摘要:先做一次dfs求得每个节点为根的子树在树状数组中编号的起始值和结束值,再树状数组做区间查询 与单点更新。 #include<cstdio>#include<iostream>#include<cstdlib>#include<cstring>#include<string>#include<algo
阅读全文
摘要:求组成的等腰三角形面积最大值。 对此题的总结:暴力出奇迹 组成的三角形放置方式一共只有4种,用ans表示目前已知的最长三角形的边长,从上到下,从左到右枚举顶点,再枚举边长,一个重要剪枝是枚举边长l时先判断l = ans时的边能不能对称。 最终暴力只要200多ms,而时间限制为10s #include
阅读全文
摘要:截至写博客为止,貌似这是网上第一个采用数学公式来处理的。 网上的题解都是DFS或是动态规划,但感觉可以推公式直接用数学的方法处理,想了好久,终于推出公式。 题意:一个长度为n的由数字1,2,3,4 组成的序列,求至少有一对1,4相邻且2或3必须用上的方法数。 思路: 计A为有1,4相邻的方法数,B为
阅读全文
摘要:题意:给定两个字符串(可能为空串),求这两个串交叉组成新串的子串中的回文串的最大长度。 布尔型变量dp[i][j][k][l]表示串a从i到j,b从k到l能否组成新串,初始化为false,则采取区间动态规划。(从1计数) 1 #include<algorithm> 2 #include<cmath>
阅读全文
摘要:讲解见http://www.cnblogs.com/IMGavin/p/5621370.html, 4 可重组合 dfs枚举子树的节点个数,相乘再累加
阅读全文
摘要:开始写成01背包的形式,求m元可买物品价值的最大值 dp[j] = max(dp[j], dp[j - pri[i]] + pri[i]) 结果为m - dp[m] 但后来发现是有问题的, 比如这组过不去 5 15 14 13 13 42 60 正解应该m-5 >= 0时买尽量多的物品,然后剩下的钱
阅读全文
摘要:本文持续更新…… 1 给定两组序列 求上下匹配的最大值(POJ1692 Crossed Matchings) 题意:给出两行数,求上下匹配的最多组数是多少。 匹配规则: 1 匹配对的数字必须相同 2 每个匹配必须有且只能有一个匹配与之相交叉,且相交叉的两组匹配数字必须不同 3 一个数最多只能匹配一次
阅读全文

浙公网安备 33010602011771号