zoukankan      html  css  js  c++  java
  • hdu 6053(To my boyfriend)

    -----------题目链接-------------

    题目描述:

    给定一个矩阵,定义(f(A)) 为矩阵中不同元素的个数。现在要求(f(A))的期望。

    解法:

    首先来暴力的,复杂度大约:(O(n^{4}))。枚举原矩阵中每一个数字的贡献数,

    
    LL submatix(int x,int y)
    {
        LL res=1ll*x*(x+1)*y*(y+1)/4;
        return res;
    }
    LL find(int x,int y)
    {
        LL res;
        int L=1,R;
        int val=maze[x][y];
        R=y;
        for(int i=y+1;i<=m;i++)
        {
            if(maze[x][i]==val) break;
            R=i;
        }
        res=1ll*x*y*(R-y+1);
        for(int i=x+1;i<=n;i++)
        {
            int l,r;
            if(maze[i][y]==val) break;
            for(int j=y;j>=max(1,L) ;j--)
            {
                if(maze[i][j]==val) break;
                l=j;
            }
            for(int j=y;j<=min(m,R);j++) 
            {
                if(maze[i][j]==val) break;
                r=j;
            }
            res+=1ll*x*(y-l+1)*(r-y+1);
            L=max(L,l),R=min(R,r);
        }
        return res;
    }
    double get()
    {
        LL sum=0;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                sum+=find(i,j);
            }
        }
        return (double)sum;
    }
     
    int main()
    {
        int ncase;
        scanf("%d",&ncase);
        while(ncase--)
        {
            scanf("%d%d",&n,&m);
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=m;j++)
                    scanf("%d",&maze[i][j]);
            }
            printf("%.9lf
    ",get()/submatix(n,m));
        }
        return 0;
    }
    
  • 相关阅读:
    MySQL 多会话之间更新数据的小实例
    MySQL Profile
    MySQL Explain
    MySQL 索引
    利用网站上传漏洞使用一句话木马控制服务器
    kali之nmap
    kali之使用sqlmap进行sql注入
    kali之DVWA
    Kali安装nessus
    openvas
  • 原文地址:https://www.cnblogs.com/coded-ream/p/7275341.html
Copyright © 2011-2022 走看看