zoukankan      html  css  js  c++  java
  • 2020牛客暑假多校训练营(第二场)F-Fake Maxpooling(DP)

    地址:https://ac.nowcoder.com/acm/contest/5667/F

    题意:

    n*m的矩阵,mp[i][j]=lcm(i,j)

    求每个k*k矩阵的最大值之和

    解析一,DP做法:

    针对k>1的情况,我们把每个2*2矩阵的最大值放在右下角。

    k*k的矩阵,它是由若干个2*2的矩阵组成。

    mp[i][j]=max(mp[i][j],max(mp[i-1][j],mp[i][j-1]));

    这样,每个k*k矩阵,它的最大值都在右下角。

    求(k~m)*(k~n)的矩阵和即可。

    #include<cstdio>
    #include<stack>
    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include <deque>
    typedef long long ll;
    using namespace std;
    priority_queue<int,vector<int>,greater<int> > q;//ó??è?aD?μ?ó??è?óáD
    deque<int> deq;
    const int ma=2e2+20;
    const int maxn=5e3+20;
    int mp[maxn][maxn];
    int mb[maxn][maxn];
    int pos[ma];
    int top=0;
    int ok=0;
    int n,m,k;
    struct node
    {
        int x,id;
    }st[maxn];
    bool cmp(node a , node b)
    {
        if(a.x==b.x)
            return a.id<b.id;
        return a.x<b.x;
    }
    int getlcm(int a,int b)
    {
        return a*b/__gcd(a,b);
    }
    int gcd(int a,int b)
    {
        return b==0?a:gcd(b,a%b);
    }
    int main()
    {   // 4 0 20
        cin>>n>>m>>k;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                mp[i][j]=i*j/gcd(i,j);
            }
        }
        if(k>1)
        {
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=m;j++)
                    mp[i][j]=max(mp[i][j],max(mp[i-1][j],mp[i][j-1]));
            }
                     
        }
        ll sum=0;
        for(int i=k;i<=n;i++)
        {
            for(int j=k;j<=m;j++)
                sum+=mp[i][j];
        }
        cout<<sum<<endl;
    }
  • 相关阅读:
    Atlas
    MHA高可用
    Mycat 读写分离
    数据库 基于GTID主从复制
    DHCP服务
    python垃圾回收机制
    深拷贝、浅拷贝、引用(总结)
    python内存管理机制
    web安全-横向越权与纵向越权
    登录功能SQL注入
  • 原文地址:https://www.cnblogs.com/liyexin/p/13321917.html
Copyright © 2011-2022 走看看