比赛 收心赛 评测结果 WWWWAAAAAAWWWWWWWWWW
题目名称 矩阵游戏 最终得分 30
用户昵称 123 运行时间 1.405 s
代码语言 C++ 内存使用 4.14 MiB
提交时间 2026-02-24 12:08:54
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=330,inf=1e6;
int t,n,m,a[N][N],mi[3],mx[3],now[3],c[N],b[N][N];
void print()
{
    cout<<"YES"<<endl;
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=m;j++) cout<<b[i][j]<<" ";
        cout<<endl;
    } 
}
void solve2()
{
    for (int i=2;i<n;i++) now[i%2]+=a[i][1]-a[i-1][1],mx[i%2]=max(mx[i%2],now[i%2]),mi[i%2]=min(mi[i%2],now[i%2]);
    if (mx[0]+max(0,-mi[0])>2e6 || mx[1]+max(0,-mi[1])>2e6 || max(0,-mi[0])>a[1][1]-max(0,-mi[1]) || a[1][1]-(2*inf-mx[1])>(2*inf-mx[0]))
    {
        cout<<"NO"<<endl;
        return ;
    }
    c[1]=max(max(0,-mi[0]),a[1][1]-(2*inf-mx[1])),c[2]=a[1][1]-c[1];
    for (int i=2;i<n;i++) c[i+1]=c[i-1]+a[i][1]-a[i-1][1];
    for (int i=1;i<=n;i++) b[i][1]=min(inf,c[i]),b[i][2]=c[i]-b[i][1];
    print();
}
void solve1()
{
    
}
void solve3()
{
    
}
int main() {
    freopen("matrix.in","r",stdin);
    freopen("matrix.out","w",stdout);
    ios::sync_with_stdio(0),cin.tie(0);
    cin>>t;
    while (t--)
    {
        memset(mi,0x3f,sizeof(mi)),memset(mx,0,sizeof(mx)),memset(now,0,sizeof(now));
        cin>>n>>m;
        for (int i=1;i<n;i++)
        {
            for (int j=1;j<m;j++) cin>>a[i][j];
        }
        solve2();
    }
}