摘要: 状态压缩经典题目令res[i][j][k]表示第i行状态为第j个状态时,第i-1行的状态为第k个状态时最多能摆放的个数,令state[i][j]表示第i行的第j个状态,kk[i][j]表示第i行第j个状态所放的个数,len[i]表示第i行的可能的状态数。则:res[i][j][k]=max(res[i][j][k],res[i-1][k][l]+kk[i][j]);(0<=l<len[i-2])结果就是:在res[n][j][k]中找一个最大的。状态压缩经典题目令res[i][j][k]表示第i行状态为第j个状态时,第i-1行的状态为第k个状态时最多能摆放的个数,令state[i] 阅读全文
posted @ 2012-04-01 22:08 书山有路,学海无涯 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 令res[i][j]表示从str[i]到str[j]需要添加字符的个数;如果str[k]与str[i]匹配, res[i][j]=min(res[i][j], res[i+1][k-1]+res[k+1][j]);如果str[k]与str[j]匹配, res[i][j]=min(res[i][j],res[i][k-1]+res[k+1][j-1] );如果str[k]与str[i]和str[j]都不匹配,res[i][j]=min(res[i][j],res[i][k-1]+res[k+1][j]+1 );#include<iostream>#include<cstdio& 阅读全文
posted @ 2012-04-01 11:46 书山有路,学海无涯 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 令res[i][s1][k]表示第i行状态为s1,前i行摆放棋子的个数为k的方案个数;res[i][s1][k]=∑res[i-1][s2][k-inum]; inum表示第i行摆放的棋子个数,s1,s2表示第i行和第i-1行的状态,两种状态能够相容。#include<iostream>#include<cstdio>#include<cstring>using namespace std;#define lld long long lld res[11][1025][101];int n,m;int init(int j,int state,int inu 阅读全文
posted @ 2012-04-01 11:43 书山有路,学海无涯 阅读(215) 评论(0) 推荐(0) 编辑