zoukankan      html  css  js  c++  java
  • P4170 [CQOI2007]涂色

    传送门

    区间dp,设(f[l][r])表示区间((l,r))的最小次数,当(l==r)时为(1),当(s[l]==s[r])时为(min(f[l][r-1],f[l+1][r])),否则枚举断点(k),为(min(f[l][k]+f[k+1][r]))

    //minamoto
    #include<bits/stdc++.h>
    #define R register
    #define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i)
    #define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i)
    #define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
    using namespace std;
    const int N=55;
    char s[N];int f[N][N],n;
    int main(){
    //	freopen("testdata.in","r",stdin);
    	scanf("%s",s+1),n=strlen(s+1),memset(f,0x3f,sizeof(f));
    	fp(i,1,n)f[i][i]=1;
    	fp(l,1,n-1)fp(i,1,n-l){
    		if(s[i]==s[i+l])f[i][i+l]=min(f[i+1][i+l],f[i][i+l-1]);
    		else fp(k,i,i+l-1)f[i][i+l]=min(f[i][i+l],f[i][k]+f[k+1][i+l]);
    	}printf("%d
    ",f[1][n]);return 0;
    }
    
  • 相关阅读:
    (OK) MIMP
    (OK) MIMP
    (OK) MIMP
    Linux内核报文收发-L3
    【Linux4.1.12源码分析】邻居子系统实现分析
    (OK) MIMP
    (OK) MIMP
    (OK) MIMP
    (OK) MIMP
    (OK) MIMP
  • 原文地址:https://www.cnblogs.com/bztMinamoto/p/10079816.html
Copyright © 2011-2022 走看看