由题面可以推出,Tina一定坐在教室四个角,而Rahul一定坐在可选择的最中间的位置,
原本打算按照规律,算出从k=0到k=n*m-1中,每一圈的座位数
后来发现n*m<= 1e5,直接每个座位计算,与四个角最大的距离就好
在确定方法前,一定要再看一眼数据范围啊
#include<cstdio> #include<cstdlib> #include<vector> #include<algorithm> #include<cstring> #include<queue> #include<cmath> #include<iostream> #define ll long long using namespace std; inline int read() { int x=0,f=1;char c=getchar(); while(c<'0' || c>'9' ) { if(c=='-' ) f=-1; c=getchar(); } while(c>='0'&&c<='9' ) x=(x<<3)+(x<<1)+c-'0',c=getchar(); return x*f; } int t,n,m,k; const int N=60; bool mp[N][N]; int a[100010]; int main() { t=read(); while(t--) { n=read(),m=read(); int tot=0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) a[tot++]=max(i-1,n-i)+max(j-1,m-j); sort(a,a+tot); for(int i=0;i<=n*m-1;i++) cout<<a[i]<<" "; cout<<endl; } return 0; }