• HDU 6052


    题意略。

    思路:我们单独考虑每种颜色的贡献,颜色c对答案的贡献 == 含有c的矩形个数,这就是在考查我们计数的能力,暴力可过。

    #include<bits/stdc++.h>
    #define maxn 105
    using namespace std;
    
    int color[maxn][maxn];
    int n,m;
    
    double calcu(int x,int y){
        int l = 0,r = m + 1,c = color[x][y];
        double ret = 0;
        for(int i = x;i >= 1;--i){
            if(color[i][y] == c && i < x) break;
            for(int j = y - 1;j >= 1;--j){
                if(color[i][j] == c){
                    l = max(l,j);
                    break;
                }
            }
            if(i == x){
                ret += max(1,(y - l)) * (m - y + 1) * (n - x + 1);
                continue;
            }
            for(int j = y + 1;j <= m;++j){
                if(color[i][j] == c){
                    r = min(r,j);
                    break;
                }
            }
            //printf("l == %d r == %d
    ",l,r);
            ret += max(1,(y - l)) * max(1,(r - y)) * (n - x + 1);
        }
        //printf("now ret == %lf
    ",ret);
        return ret;
    }
    
    int main(){
        int T;
        scanf("%d",&T);
        while(T--){
            scanf("%d%d",&n,&m);
            for(int i = 1;i <= n;++i){
                for(int j = 1;j <= m;++j){
                    scanf("%d",&color[i][j]);
                }
            }
            double numerator = 0,denominator = 0;
            for(int i = 1;i <= n;++i){
                for(int j = 1;j <= m;++j){
                    denominator += i * j;
                    numerator += calcu(i,j);
                }
            }
            printf("%.9lf
    ",numerator / denominator);
        }
        return 0;
    }
    
    /*
    1
    3 3
    1 2 3
    4 5 6
    7 8 9
    */
  • 相关阅读:
    监控文件变化
    哈希+ LIst + 流文件 应用
    (转)Delphi版木马彩衣一个简单的花指令伪装器
    (转)TThread 详解
    遍历菜单
    哈希 + LIST简单应用(DELPHI)
    WINDOWS API速查
    ASP.NET 3.5的页面指令
    感冒怎么治?
    ASPNET应用程序文件夹
  • 原文地址:https://www.cnblogs.com/tiberius/p/8597175.html
Copyright © 2020-2023  润新知