zoukankan      html  css  js  c++  java
  • 【Codeforces 1114D】Flood Fill

    【链接】 我是链接,点我呀:)
    【题意】

    你选择一个point作为start_position 然后每次你可以将包含该start_position的所有联通块变成任意颜色 问你最少要多少次变换才能将所有的方块变成相同颜色.

    【题解】

    设dp[i][j][0]表示将i..j这个区间的所有方块变成a[i]所需的次数 设dp[i][j][1]表示将i..j这个区间的所有方块变成a[j]所需的次数 从小到大枚举区间长度。 然后做一个区间dp就好了 注意dp[i][j][0]不能由dp[i][j-1][0]或者是dp[i][j-1][1]转移过来 因为dp[i][j-1][0]或是dp[i][j-1][1]会先到达dp[i][j][1]这个状态不能直接到达dp[i][j][0]这个状态 (可能和dp[i][j][0]表示的状态一样,但是还需要经过一次转移才能到,所以不能从其直接转移过去) 只能由dp[i+1][j][0]或者是dp[i+1][j][1]直接转移过来 (不能理解的话再去看看题意>_<)

    【代码】

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 5000;
    
    int a[N+10],c[N+10],n;
    int dp[N+10][N+10][2];
    
    int cmp(int x,int y){
        if (x!=y)
            return 1;
        else
            return 0;
    }
    
    int main(){
        scanf("%d",&n);
        for (int i = 1;i <= n;i++) scanf("%d",&c[i]);
        int nn = 0;
        for (int i = 1;i <= n;i++) {
            int j = i;
            while (j+1<=n && c[j+1]==c[i]) j++;
            a[++nn] = c[i];
            i = j;
        }
        n = nn;
        for (int i = 1;i <= n;i++)
    			for (int j = 1;j <= n;j++)
    				for (int k = 0;k <= 1;k++)
    						dp[i][j][k] = 6000;
        for (int i = 1;i <= n;i++) {
            dp[i][i][0] = 0;
            dp[i][i][1] = 0;
        }
        for (int l = 2;l <= n;l++)
            for (int i = 1;i <= n;i++) {
                int j = i+l-1;
                if (j>n) break;
                dp[i][j][0] = min(dp[i][j][0], dp[i+1][j][0] + 1);
                dp[i][j][0] = min(dp[i][j][0], dp[i+1][j][1] + cmp(a[i],a[j]));
    
                dp[i][j][1] = min(dp[i][j][1], dp[i][j-1][0] + cmp(a[i],a[j]));
                dp[i][j][1] = min(dp[i][j][1], dp[i][j-1][1] + 1);
            }
        printf("%d
    ",min(dp[1][n][0],dp[1][n][1]));
        return 0;
    }
    
  • 相关阅读:
    苹果一体机发射Wi-Fi
    iphone 屏蔽系统自动更新,消除设置上的小红点
    data parameter is nil 异常处理
    copy与mutableCopy的区别总结
    java axis2 webservice
    mysql 远程 ip访问
    mysql 存储过程小问题
    mysql游标错误
    is not writable or has an invalid setter method错误的解决
    Struts2中关于"There is no Action mapped for namespace / and action name"的总结
  • 原文地址:https://www.cnblogs.com/AWCXV/p/10361339.html
Copyright © 2011-2022 走看看