回来看看,顺手抢个最优解
ps:这份代码在洛谷也是最优解

#include<bits/stdc++.h>
using namespace std;
const int N=17,INF=0x3f3f3f3f;
int n,m,r,c,a[N][N],sum[N][N],d[N],dp[N][N],ans=INF,sel[N];
int zz[N][N][N],ymq[N][N][N];  //小彩蛋,ymq是zz男朋友的名字缩写哦~
inline int rd()
{
    int x=0;char c=getchar();
    while(c<'0'||c>'9') c=getchar();
    while(c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
    return x;
}
void wr(int x)
{
    if(x>9) wr(x/10);
    putchar(x%10+'0');
}
void dfs(int dep)
{
    if(dep>r)
    {
        for(int i=1;i<=m;++i)
            for(int j=1;j<=c;++j)
                dp[i][j]=INF;
        for(int i=1;i<=m;++i)dp[i][1]=d[i];
        for(int j=2;j<=c;++j)
            for(int i=j;i<=m;++i)
            {
                int mn=INF;
                for(int k=j-1;k<i;++k)
                    if(dp[k][j-1]<INF)
                        mn=min(mn,dp[k][j-1]+sum[k][i]);
                dp[i][j]=mn+d[i];
            }
        for(int i=c;i<=m;++i)
            if(dp[i][c]<ans)
                ans=dp[i][c];
        return;
    }
    for(int i=(dep==1?1:sel[dep-1]+1);i<=n-(r-dep);++i)
    {
        sel[dep]=i;
        if(dep>1)
        {
            int p=sel[dep-1];
            for(int j=1;j<=m;++j)d[j]+=zz[p][i][j];
        }
        for(int x=1;x<m;++x)
            for(int y=x+1;y<=m;++y)
                sum[x][y]+=ymq[x][y][i];
        dfs(dep+1);
        if(dep>1)
        {
            int p=sel[dep-1];
            for(int j=1;j<=m;++j)d[j]-=zz[p][i][j];
        }
        for(int x=1;x<m;++x)
            for(int y=x+1;y<=m;++y)
                sum[x][y]-=ymq[x][y][i];
    }
}
int main()
{
    n=rd();m=rd();r=rd();c=rd();
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
            a[i][j]=rd();
    for(int i=1;i<n;++i)
        for(int j=i+1;j<=n;++j)
            for(int k=1;k<=m;++k)
                zz[i][j][k]=zz[j][i][k]=abs(a[i][k]-a[j][k]);
    for(int i=1;i<m;++i)
        for(int j=i+1;j<=m;++j)
            for(int k=1;k<=n;++k)
                ymq[i][j][k]=ymq[j][i][k]=abs(a[k][i]-a[k][j]);
    dfs(1);
    wr(ans);
    return 0;
}

1 条评论

  • @ 2026-10-29 22:36:22

    这里是zz的小号,QQ号3569070051,欢迎大家加我awa
    zz是盛泽二中22届的猫咪学长,快来骚扰他吧qwq

  • 1

信息

ID
1520
难度
9
分类
(无)
标签
递交数
27
已通过
1
通过率
4%
被复制
6
上传者