| 比赛 |
收心赛 |
评测结果 |
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();
}
}