2013年8月12日

codeforce 149D Coloring Brackets 区间DP

摘要: 题目链接:http://codeforces.com/problemset/problem/149/D继续区间DP啊。。。。思路:定义dp[l][r][c1][c2]表示对于区间(l,r)来说,l用c1染色,r用c2染色的方案数。那么:1,如果括号l和括号r匹配(即括号l和r为一对括号)那么dp[l][r][c1][c2]+=dp[l+1][r-1][i][j](i与c1为不同的颜色,j与c2是不同的颜色,或i=0或j=0)2,如果括号l和括号r不匹配,那么dp[l][r][c1][c2]+=dp[l][m(l)][c1][i]*dp[m(l)+1][r][j][c2];(i与c1为不同的颜色 阅读全文

posted @ 2013-08-12 23:02 GyyZyp 阅读(214) 评论(0) 推荐(0) 编辑

POJ1845-Sumdiv大数约数和

摘要: POJ1845-Sumdiv大数约数和 阅读全文

posted @ 2013-08-12 16:24 GyyZyp 阅读(1363) 评论(0) 推荐(0) 编辑

poj1159 Palindrome 区间DP

摘要: 题目链接:http://poj.org/problem?id=1159思路1:区间DP思想:定义dp[i][j]表示从区间(i,j)之间需要增加的字符的最少数量,那么如果s[i]==s[j],那么dp[i][j]=dp[i-1][j-1]否则dp[i][j]=min(dp[i+1][j]+1,dp[i][j-1]+1);如果直接DP,需要开5001*5001的数组,用int会超内存用short int 能过;代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 short in 阅读全文

posted @ 2013-08-12 13:21 GyyZyp 阅读(209) 评论(0) 推荐(0) 编辑

poj 2955 Brackets 区间DP

摘要: 题目链接:http://poj.org/problem?id=2955不容易啊,终于把这道题A了,还是对区间DP不熟悉啊。。思路:关键就是怎样进行状态转移;我的想法是定义dp[i][j]表示从i到j的最优匹配数,那么对于k(i 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int dp[110][110]; 8 string s; 9 bool match(int i,int j)10 {11 if((s[i]=='('&&s[j]==')')||(s[i 阅读全文

posted @ 2013-08-12 11:19 GyyZyp 阅读(154) 评论(0) 推荐(0) 编辑

导航