Codeforces 607B Zuma 【区间dp】
来源:互联网 发布:怎样推广app软件 编辑:程序博客网 时间:2024/06/05 14:34
题意:给你一个序列,每次可以消除一个回文序列,问你最少需要多少次操作可以删除这个序列。
思路:区间dp,感觉边界状态递推处理有点麻烦,直接上记忆化了。
一般的有 dp[i][j] =min(dp[i][k] + dp[k+1][j]); (i <= k <= j)
特别的有 a[i] == a[j] : dp[i][j] = min(dp[i+1][j-1]);
AC代码:
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <algorithm>#include <queue>#include <stack>#include <map>#include <set>#include <vector>#include <string>#define INF 0x3f3f3f3f#define eps 1e-8#define MAXN (500+10)#define MAXM (500000)#define Ri(a) scanf("%d", &a)#define Rl(a) scanf("%lld", &a)#define Rf(a) scanf("%lf", &a)#define Rs(a) scanf("%s", a)#define Pi(a) printf("%d\n", (a))#define Pf(a) printf("%.2lf\n", (a))#define Pl(a) printf("%lld\n", (a))#define Ps(a) printf("%s\n", (a))#define W(a) while(a--)#define CLR(a, b) memset(a, (b), sizeof(a))#define MOD 1000000007#define LL long long#define lson o<<1, l, mid#define rson o<<1|1, mid+1, r#define ll o<<1#define rr o<<1|1#define PI acos(-1.0)using namespace std;int dp[MAXN][MAXN];int a[MAXN];int DFS(int i, int j){ if(dp[i][j] != -1) return dp[i][j]; if(i == j) return 1; if(i > j) return 0; if(i + 1 == j) { if(a[i] == a[j]) return 1; else return 2; } dp[i][j] = INF; if(a[i] == a[j]) dp[i][j] = DFS(i+1, j-1); for(int k = i; k <= j; k++) dp[i][j] = min(dp[i][j], DFS(i, k) + DFS(k+1, j)); return dp[i][j];}int main(){ int n; Ri(n); for(int i = 1; i <= n; i++) Ri(a[i]); CLR(dp, -1); Pi(DFS(1, n)); return 0;}
0 0
- Codeforces 607B - Zuma (区间DP)
- Codeforces 607B Zuma 【区间dp】
- codeforces 607B Zuma 区间dp
- CodeForces 607 B. Zuma(区间DP)
- codeforces 607 B Zuma(区间dp)
- Codeforces 607B Zuma (区间dp)
- [Codeforces 607B Zuma]区间DP
- [区间DP] Zuma CodeForces 607B
- CodeForces 607B:Zuma(区间DP)
- codeforces 607B #336B Zuma [区间DP]【动态规划】
- Codeforces 607B:Zuma DP
- Codeforces Round #336 (Div. 1)-B. Zuma(区间dp)
- Codeforces Round #336 (Div. 1)B. Zuma (区间DP)
- codeforces 607B. Zuma
- CodeForces-607B Zuma
- codeforces #336 D. Zuma (区间dp)
- codeforces 607B 区间dp
- Codeforces_607B:Zuma(区间DP)
- 动态库的加载
- 如何取得从1970年1月1日0时0分0秒到现在的毫秒数?
- socket ---> server and client
- 【Java】内部类(Inner Class)如何创建(new)
- JVM学习01-JVM内存模型
- Codeforces 607B Zuma 【区间dp】
- css3的图形3d翻转效果应用示例
- 二叉树遍历技巧
- VOIP
- 我的awesome的相关配置问题
- 内排序之快排算法的实现C++
- perl列表与数组
- Spring简化配置
- Java代码获得某月的最后一天