Zuma HDU - 6212 (区间dp)
2017-10-14 11:02
183 查看
题意:祖玛游戏。给一串01序列。每大于等于三个相同的连在一起的话,就可以消去。往序列中间加一个0或者1称为一个操作,问要将序列全部消掉,最少需要多少个操作
分析:开始的想法是
dp[i][j]:下标从i到j全部消去最少需要的操作数
然后写完之后,wa了。
原因是如果s[i]=s[j]的时候,如果左端相同+右端相同的数量大于3的时候就不能在中间找数和两端一起消去了,因为当左端+右端相同的数量>3,那么两边都是2个,如果中间找数的话,因为三个就会消掉,中间的会和一端先消掉。
然后中间找的数,连续的数量只能是1,如果为2的话,会和一端提前消掉..
为了方便,我们可以缩点
分析:开始的想法是
dp[i][j]:下标从i到j全部消去最少需要的操作数
然后写完之后,wa了。
原因是如果s[i]=s[j]的时候,如果左端相同+右端相同的数量大于3的时候就不能在中间找数和两端一起消去了,因为当左端+右端相同的数量>3,那么两边都是2个,如果中间找数的话,因为三个就会消掉,中间的会和一端先消掉。
然后中间找的数,连续的数量只能是1,如果为2的话,会和一端提前消掉..
为了方便,我们可以缩点
#include <iostream> #include <cstring> #include <cmath> #include <algorithm> #include <cstdio> using namespace std; #define ll long long #define inf 0x3f3f3f3f #define mem(a,b) memset(a,b,sizeof(a)) const int maxn = 405; char s[maxn]; int dp[maxn][maxn],a[maxn]; int main() { int T,case1=1; scanf("%d",&T); while(T--) { scanf("%s",s);mem(dp,inf);mem(a,0); int slen=strlen(s),p=0; a[p]=1; for(int i=1;i<slen;i++) { if(s[i]==s[i-1]) a[p]++; else { a[++p]=1; } } for(int len=1;len<=p+1;len++) { for(int i=0;i<=p;i++) { int j=i+len-1; if(j>p) break; if(len==1) {dp[i][j]=3-a[i];continue;} for(int k=i;k<j;k++) dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]); if(len&1) { dp[i][j]=min(dp[i][j],dp[i+1][j-1]+(a[i]+a[j]>2?0:1)); if(a[i]+a[j]<=3) for(int k=i+2;k<j;k+=2) if(a[k]==1) dp[i][j]=min(dp[i][j],dp[i+1][k-1]+dp[k+1][j-1]); } } } printf("Case #%d: %d\n",case1++,dp[0][p]); } return 0; } /* 4 01001101011001100 */
相关文章推荐
- Zuma HDU - 6212 (区间dp)
- Zuma HDU - 6212 (区间dp)
- Zuma HDU - 6212 (区间dp)
- Zuma HDU - 6212 (区间dp)
- Zuma HDU - 6212 (区间dp)
- Zuma HDU - 6212 (区间dp)
- Zuma HDU - 6212 (区间dp)
- Zuma HDU - 6212 (区间dp)
- Hdu 6212 Zuma【思维+区间Dp】
- Hdu-6212 Zuma(区间DP)
- HDU 6212 Zuma(区间DP)
- 2017 ACM/ICPC Asia Regional Qingdao Online 1007 hdu 6212 Zuma 区间dp
- HDU 6212 Zuma(区间dp)
- Hdu 6212 Zuma 区间DP
- 2017 ACM-ICPC 亚洲区(青岛赛区)网络赛 HDU 6212 1007 Zuma (区间DP)
- HDU 6212 Zuma(区间dp)
- HDU 6212 Zuma 2017青岛网络赛 区间DP
- hdu 6212 区间dp
- HDU 6212 Zuma ACM/ICPC 2017 Qingdao Online(区间dp)
- 2017 ACM/ICPC Asia Regional Qingdao Online 1007 hdu 6212 Zuma (区间dp)