随笔分类 -  算法竞赛入门经典训练指南 动态规划

摘要:GangstersNgangsters are going to a restaurant. Thei-th gangster comes at the timeTiand has theprosperityPi. The door of the restaurant hasK+1 states o... 阅读全文
posted @ 2014-11-08 12:17 来自大山深处的菜鸟 阅读(210) 评论(0) 推荐(0)
摘要:Raucous RockersYou just inherited the rights tonpreviously unreleased songs recorded by the popular group Raucous Rockers. You plan to release a set o... 阅读全文
posted @ 2014-11-08 09:52 来自大山深处的菜鸟 阅读(215) 评论(0) 推荐(0)
摘要:这题说的是给了一个矩阵连乘的表达式,要求判断是否合法,括符是合法的就是表达式可能不合法 , 不合法的 输出 error 合法的输出 多少次运算, 采用递归 找到对应的区间递归下去#include #include #include #include using namespace std;typed... 阅读全文
posted @ 2014-11-07 19:11 来自大山深处的菜鸟 阅读(229) 评论(0) 推荐(0)
摘要:如果我们设f[i]为4个柱子时把i个东东从一个柱子移到另一个柱子所用的最少步骤,设g[i]为3个柱子时对应的值,我们可以得到f[n]=min{2*f[k]+g[n-k]},其中g[i]是已知的为2^i-1。 然后接着就搞不下去了,看了别人报告说要找规律。有了上面的式子之后,我们打印前60个解还是很好... 阅读全文
posted @ 2014-11-07 13:02 来自大山深处的菜鸟 阅读(256) 评论(0) 推荐(0)
摘要:这题说的给了 一 个 图,每次 按照他给的顺序 跳格子 给了 每种 格子之间的 转换 代价 求最后 转换代价dp[i][j] 表示 左脚在i 右脚 在j 的最小代价 然后用滚动数组 ,就可以不断说的转化,然后固定一个 另一个变换dp[n][i] dp[i][n]#include #include #... 阅读全文
posted @ 2014-11-01 16:01 来自大山深处的菜鸟 阅读(153) 评论(0) 推荐(0)
摘要:这题说的是给了 一个串 然后 比如 aaaaabbbbbbcdddd 可以化成5(a)6(b)c4(d) 这样的串明显 长度更短了 , 请 计算出使得这个串最短的 长度是多少,dp[i][j] 表示 从字符串i到j 之间的最短的 长度, 然后 先预处理出来 可以简化的 区间然后 枚举每个区间 去求得... 阅读全文
posted @ 2014-11-01 14:12 来自大山深处的菜鸟 阅读(143) 评论(0) 推荐(0)
摘要:这题说的是给了一个序列1到n然后你从1 位置开始数k个删除,直到最后每个数都被删除了。我们考虑1个数在被删除前后的位置,比如现在在i位置那么 回到删除当前的最后一个是 (i+k)L 了为删除前 的 个数, 这样我们每次重新排序后就知道他在什么位置了这样模拟着三个数就可以了不断的往回退#include... 阅读全文
posted @ 2014-10-29 22:27 来自大山深处的菜鸟 阅读(128) 评论(0) 推荐(0)
摘要:这题说的是一个人要消灭 所有的机器人,但是他有他可以消灭的机器人,他可以通过它消灭的机器人的武器去消灭其他的机器人, 给了一个可以消灭的关系的矩阵,计算消灭这些机器人的顺序的不同方案是多少种 , 刚开始以为是方案数 而不是 消灭的顺序wa我们可以知道dp[S] 这个集合的状态可以从 他的子集来, 枚... 阅读全文
posted @ 2014-10-28 17:13 来自大山深处的菜鸟 阅读(210) 评论(0) 推荐(0)
摘要:这题说的是 给了 n 个 点 然后每个点 都有 相应的概率,你要将这n个点划分成w个集合使得 下面定义的这种算法 得到的 值最小 n1 是集合一的 个数 是 集合一内的每个点的概率和, 下面是分成两个集合的 样例 前面的系数 是前wi个集合的 总个数=n1+ (n1+n2)= 3(0.3 + 0.0... 阅读全文
posted @ 2014-10-27 21:40 来自大山深处的菜鸟 阅读(187) 评论(0) 推荐(0)
摘要:这题说的是给了一个长度为n的字符串(1000)求最长回文子序列,并输出当str[i]==ste[j]时dp[i][j]=dp[i+1][i-1]+2 否则 dp[i][j]=Max(dp[j+1][i],dp[j][i-1]) 要强调一下这uva真是强大 每个后面都加一个string都不爆内存太厉害... 阅读全文
posted @ 2014-10-27 17:49 来自大山深处的菜鸟 阅读(277) 评论(0) 推荐(0)
摘要:题意: 给一个长度为n的串n#include #include #include using namespace std;const int maxn = 1005;int dp[maxn][30];int ch[maxn][30];int len[maxn];vector common[maxn]... 阅读全文
posted @ 2014-10-21 23:18 来自大山深处的菜鸟 阅读(240) 评论(0) 推荐(0)
摘要:这题说的是给了长度为n的字符串, 将这个字符串分成k个子串,求使得这个k尽量的小的最小值,当这个长度为n的字符串本身就是回文串的时候,那么k为1。考虑第i个字符和前i-1个中的第j个搭配形成回文子串,开一个数组标记一下就可以知道了这个从j到i是否是回文子串然后,每次取最小,我们发现这样是一个最优的子... 阅读全文
posted @ 2014-08-25 18:54 来自大山深处的菜鸟 阅读(304) 评论(0) 推荐(0)