随笔分类 - DP
hdu 4542 小明系列故事——未知剩余系
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4542这个题 type 为 0 和 type 为 1 的求解方法居然没有什么关系,无语对于 type 为1 的情况:可以发现随着x的增大[1~x]中不是x的约数的数也基本上是增大的所以可以开一个比较大的数组,用求解素数的思路求出每个数中它的非约数的个数然后找到某个数量第一次出现的x 如果没有出现,就可以简单的认为是没有这种情况对于type为0的情况:必须先知道一点假设P(i)代表某个素数a(i)代表这个素数的幂那么任何一个数都可以分解成 ( P(1)^a(1) )*( P(2)^a(2) )*( P(3)^a
阅读全文
poj 3691 DNA repair
摘要:http://poj.org/problem?id=3691AC自动机+DP代码:#include<iostream>#include<cmath>#include<cstdio>#include<string>#include<cstring>#include<vector>#include<stack>#include<queue>#include<set>#include<map>#include<algorithm>#define LL long long
阅读全文
poj 1625 Censored!
摘要:http://poj.org/problem?id=1625AC自动机+DP+高精度高精度的部分用c++里面的重载就可以从树上节点转移到另一节点时 对其可行性的求解一定要注意代码:#include<iostream>#include<cmath>#include<cstdio>#include<string>#include<cstring>#include<vector>#include<stack>#include<queue>#include<set>#include<map
阅读全文
hdu 2825 Wireless Password
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2825hdu 有必要卡时间卡的那么厉害吗 无语了刚开始为了方便,我把各个字符串的首字符中没有出现的字符,又加在了根节点上,这样理解起来方便谁知道在这里就让我超时超到死呀,后来把那些本来想加的字符集成到根节点上就可以了,不就是多了20左右个字符吗 有必要让我超时超的那么恶心吗 无语了代码:#include<iostream>#include<cmath>#include<cstdio>#include<string>#include<cstring>#
阅读全文
D. Cow Program
摘要:http://codeforces.com/contest/284/problem/Ddp+记忆化搜索代码:#include<iostream>#include<cmath>#include<cstdio>#include<string>#include<cstring>#include<vector>#include<stack>#include<queue>#include<map>#include<set>#include<algorithm>#define
阅读全文
D. Yet Another Number Game
摘要:http://codeforces.com/contest/282/problem/D理解上去并不难 就是 博弈论 用 dp 实现但是用记忆化搜索时间复杂度太高 需要用递推 用奇异状态去更新非奇异状态 没被更新到的就是奇异状态这样的话只有奇异状态才去更新 奇异状态相比非奇异状态要少很多 所以节约了大量时间代码:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<vector>#includ
阅读全文
1552. Brainfuck
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1552“You may assume that optimal program will not have to modify more than four memory cells.”刚开始没有注意到这句话 一直想不到怎么解。后来才发现直观的解法就是 dp[50][27][27][27][27][4] 可以用滚动数组优化内存 但是记录路径的部分没有优化 会超内存后来看了大牛的提示原来只需要用 dp[50][27][27][27][4] 降低了一个维度应为当 dp[i][l][r][k][u][
阅读全文
SRM 572 DIV 2 1000
摘要:DP+数学 恶心死我了 DP那部分没什么 数学的那部分各种细节各种繁琐呀在比赛中就可以做出来这种题的人果然不一般 自己还需锻炼呀代码:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<vector>#include<set>#include<map>#include<string>#include<queue>#include<sta
阅读全文
1696. Salary for Robots
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1696代码及其注释:#include<iostream>#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<vector>#include<set>#include<map>#include<string>#include<queue>#include<stack&g
阅读全文
1342. Enterprise
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1342简单DP代码:#include<iostream>#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<vector>#include<set>#include<map>#include<string>#include<queue>#include<stack&g
阅读全文
1276. Train
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1276用 ans[numaa][numab][numba][numbb][0] 表示用 numaa个AA numab个AB numba个BA numbb个BB 以 A为结尾的种类数量用 ans[numaa][numab][numba][numbb][1] 表示用 numaa个AA numab个AB numba个BA numbb个BB 以 B为结尾的种类数量然后根据结尾是A还是B 进行向后更新数量代码:#include<iostream>#include<stdio.h>#
阅读全文
sdut 1483 红色警戒之CZ的复仇
摘要:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1483代码:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<map>#include<cmath>#define LL long longusing namespace std;const int N=100005;LL a[N],l1[N],l2[N],r1[N]
阅读全文
poj 3017 Cut the Sequence
摘要:http://poj.org/problem?id=3017dp+单调队列算法的理论时间复杂度应该还是接近 O(n^2) 但为什么过得还挺快呢 应该是后台数据的问题吧代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<map>#include<vector>#include<stack>#include<set>#include<map>#include<queue>#i
阅读全文
poj 3378 Crazy Thairs
摘要:http://poj.org/problem?id=3378要想求以第k个数为5个数中最后一个数的组合数量就要求从1到k-1这些数中比第k个小且是4个数中最后一个数的这些组合数量 之和依次类推求和用树状数组来维护 最后结果可能超long long 我用了大整数代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<map>#include<vector>#include<stack>#include<se
阅读全文
E. Choosing Balls
摘要:http://codeforces.com/contest/265/problem/E每给定一组 a b 都要进行一次遍历 每次遍历将时间复杂度控制在 o(n)每次遍历需要用到dp 思想当遍历到 第 i 个位置时 假设第i中颜色 是kf[k] 表示以k这种颜色 结尾时的最大值以k颜色结尾时 其值可以使 b*v[i]如果前面出现过相同颜色 还可能是 f[k] 或 f[k]+a*v[i]如果前面出现过不同颜色 则取前面 最大的 结尾颜色 w 也可能是值 f[w]+b*v[i]然后选最优就可以了代码:#include<iostream>#include<cstdio>#inc
阅读全文
sdut 2536 字母哥站队 A. Hometask
摘要:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2536http://codeforces.com/problemset/problem/154/A简单dp代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<map>#include<vector>#include<stack>#include<set
阅读全文
1776. Anniversary Firework sdut 2507 焰火表演
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1776http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2507dp 关键用概率呀 只有理解好其中的概率原理才可以呀代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<map>#include<vector>#includ
阅读全文
D. Table with Letters - 2
摘要:http://codeforces.com/contest/253/problem/D挺麻烦的一道题代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<map>#include<vector>#include<stack>#include<queue>#include<algorithm>#define LL long longusing namespace std;const in
阅读全文
CROC-MBTU 2012, Elimination Round (ACM-ICPC) H. Queries for Number of Palindromes
摘要:http://codeforces.com/contest/245/problem/H代码及其注释:#include<iostream>#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<vector>#include<set>#include<map>#include<string>#include<queue>#include<stack>#include
阅读全文
sdut 1008 最大公共子串
摘要:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1008如果只有两个字符串的话 就直接用DP记忆化搜索 时间复杂度是 两者长度的乘积这个题也可以DP记忆化搜索 因为所有字符串的的乘积最大为30000 再加上枚举最优 时间复杂度也不大只要把n维 翻译成一维就可以记忆化了不过为了方便 我用了map 来代替记忆化的功能代码:#include<iostream>#include<stdio.h>#include<string.h>#include<math.h
阅读全文
浙公网安备 33010602011771号