摘要: 利用性质 A*B mod C= (A mod C*B mod C) mod C (A+B) mod C = (A mod C+B mod C) mod C状态转移方程 s[i,(j-a[i] mod k) mod k]=s[i-1,j] (s[i-1,j]=1) s[i,(j+a[i] mod k) mod k]=s[i-1,j] (s[i-1,j]=1) 1 #include 2 #include 3 4 5 int main() 6 { 7 int l,i,j,k,n,tag,v[10001],s[2][201]; 8 scanf("%d"... 阅读全文
posted @ 2013-07-05 22:01 simplesslife 阅读(194) 评论(0) 推荐(0)
摘要: 状态转移函数 s[i][j]=max{s[i-1][k]}+a[i][j] i 2 #include 3 4 5 // s[i][j]=max{s[i-1][t]+a[i][j]} 6 int main() 7 { 8 int i,j,k,f,v,tag,a[101][101],s[101][101],w[101][101],t[101]; 9 scanf("%d %d",&f,&v);10 for(i=1;i1)46 {47 j--;48 t[j]=w[j+1][t[j+1]];49 }50 printf(... 阅读全文
posted @ 2013-07-05 21:32 simplesslife 阅读(219) 评论(0) 推荐(0)
摘要: 根据题意,可从后向前递推求出 sum[i][j]即从串i到j中有单词的最大个数状态转移方程opt[i][j]=max{opt[i][t]+sum[t+1][j]} i,j表示到下标j形成了i个划分 1 #include 2 #include 3 4 5 #define N 200+10 6 7 8 char s[N],s1[21],w[7][21]; 9 10 11 int cmp(char *s1,char *s2,int i,int j)12 {13 int l1=strlen(s1);14 for(int k=0;kj-i||s1[k]!=s2[i+k])17... 阅读全文
posted @ 2013-07-05 20:42 simplesslife 阅读(184) 评论(0) 推荐(0)
摘要: 1 #include 2 #include 3 4 #define N 100+1 5 int main() 6 { 7 int i,j,tag,k,n,v[N*2],s[N*2][N*2]; 8 scanf("%d",&n); 9 for(i=1;i<=n;i++)10 {11 scanf("%d",&v[i]);12 v[i+n]=v[i];13 }14 for(i=1;i<=2*n;i++)15 {16 s[i][i]=0;17 }18 for(i=1;i<n;i++... 阅读全文
posted @ 2013-07-05 18:09 simplesslife 阅读(175) 评论(0) 推荐(0)