题解:f[i][j][k][l][m]表示到第i个字母,第一坑的当前两个字母是jk,第二坑lm时的最大权值。
然后暴力瞎转移就好了。
对了,10W*4*4*4*4=2560W,64M内存限制,要写滚动数组。
代码:
#include
#include
#include
#include
#define N 101000
#define inf 0x3f3f3f3f
usin...
分类:
其他好文 时间:
2015-01-21 16:37:17
阅读次数:
133
题解:
f[i][j]表示前i个数分成j段
【段:两个数=则为一段】
然后转移方程f[i][j]=f[i-1][j-1]*j+f[i-1][j]*j
就是不增加段,那么第i个数可以放到f[i-1][j]时的任意段中
增加段,那么我们随意插到某空中
代码:
#f[i][j]=f[i-1][j-1]*j+f[i-1][j]*j
ans=[0]*60
f=[ ([0]*6...
分类:
编程语言 时间:
2015-01-21 11:39:22
阅读次数:
182
第一问裸二分,第二问乱搞。
f[i][j]表示用掉i次机会,到j时合法的方案数。
代码:
#include
#include
#include
#include
#define N 50100
#define mod 10007
#define inf 0x3f3f3f3f
using namespace std;
int sk[N],sum[N],n,m;
bool che...
分类:
其他好文 时间:
2015-01-20 17:56:09
阅读次数:
111
原题地址动态规划题。最直观的想法就是用cut[i][j]表示子串s[i..j]的最小分割数,则有如下规则:1. 如果s[i..j]是回文串,则cut[i][j]=02. 如果s[i..j]不是回文串,则枚举分割点,将原字符串切成两个子串,求解子问题。递推公式:cut[i][j] = min{cut[...
分类:
其他好文 时间:
2015-01-20 17:31:50
阅读次数:
165
对于动态规划问题,往往存在递推解决方法,这个问题也不例外。要求长度为i的序列的Ai{a1,a2,……,ai}最长递增子序列,需要先求出序列Ai-1{a1,a2,……,ai-1}中以各元素(a1,a2,……,ai-1)作为最大元素的最长递增序列,然后把所有这些递增序列与ai比较,如果某个长度为m序列的末尾元素aj(j<i)比ai要小,则将元素ai加入这个递增子序列,得到一个新的长度为m+1的新序列,...
分类:
其他好文 时间:
2015-01-20 15:55:42
阅读次数:
140
题目链接:https://www.facebook.com/hackercup/problems.php?pid=688426044611322&round=344496159068801题目大意:两种赢法,一种叫做stress-free,另外一种叫做stressful。问你给定最终成绩,stres...
原题地址动态规划题令s[i..j]表示下标从i到j的子串,它的所有分割情况用words[i]表示假设s[0..i]的所有分割情况words[i]已知。则s[0..i+1]的分割情况words[i+1] = words[k] + s[k+1..i+1],其中(有三个条件要满足)(1) 0 wordB....
分类:
其他好文 时间:
2015-01-20 15:06:21
阅读次数:
157
题解:
这数据范围,来乱搞吧少年。
我的乱搞:
m==1时做一遍,m==2时做一遍。
别讨论少情况就好,m==2时时间复杂度n^3。
代码:
#include
#include
#include
#include
#define N 105
using namespace std;
int map[N][3],s[N][3],sum[N];
int f[N][N...
分类:
其他好文 时间:
2015-01-20 09:01:16
阅读次数:
176
如何学习算法 (csdn帖子)找一个ACM网站做的。一下是http://poj.grids.cn/POJ 推荐50题第一类 动态规划(至少6题,2479 和 2593 必做)2479 和 259310151042(可贪心) 114110501080122112602411(稍难) 1276第二类 搜...
分类:
编程语言 时间:
2015-01-20 06:12:00
阅读次数:
297