B. Not Sitting
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Rahul and Tina are looking forward to starting their new year at college. As they enter their new classroom, they observe the seats of students are arranged in a n×mn×m grid. The seat in row rr and column cc is denoted by (r,c)(r,c), and the distance between two seats (a,b)(a,b) and (c,d)(c,d) is |a−c|+|b−d||a−c|+|b−d|.
As the class president, Tina has access to exactly kk buckets of pink paint. The following process occurs.
- First, Tina chooses exactly kk seats in the classroom to paint with pink paint. One bucket of paint can paint exactly one seat.
- After Tina has painted kk seats in the previous step, Rahul chooses where he sits. He will not choose a seat that has been painted pink due to his hatred of the colour pink.
- After Rahul has chosen his seat, Tina chooses a seat for herself. She can choose any of the seats, painted or not, other than the one chosen by Rahul.
Rahul wants to choose a seat such that he sits as close to Tina as possible. However, Tina wants to sit as far away from Rahul as possible due to some complicated relationship history that we couldn't fit into the statement!
Now, Rahul wonders for k=0,1,…,n⋅m−1k=0,1,…,n⋅m−1, if Tina has kk buckets of paint, how close can Rahul sit to Tina, if both Rahul and Tina are aware of each other's intentions and they both act as strategically as possible? Please help satisfy Rahul's curiosity!
Input
The input consists of multiple test cases. The first line contains an integer tt (1≤t≤5⋅1041≤t≤5⋅104) — the number of test cases. The description of the test cases follows.
The first line of each test case contains two integers nn, mm (2≤n⋅m≤1052≤n⋅m≤105) — the number of rows and columns of seats in the classroom.
The sum of n⋅mn⋅m across all test cases does not exceed 105105.
Output
For each test case, output n⋅mn⋅m ordered integers — the distance between Rahul and Tina if both of them act optimally for every k∈[0,n⋅m−1]k∈[0,n⋅m−1].
Example
input
Copy
2 4 3 1 2
output
Copy
3 3 4 4 4 4 4 4 5 5 5 5 1 1
Note
One possible sequence of choices for the first testcase where Tina has k=3k=3 buckets of paints is as follows.
Tina paints the seats at positions (1,2)(1,2), (2,2)(2,2), (3,2)(3,2) with pink paint. Rahul chooses the seat at (3,1)(3,1) after which Tina chooses to sit at (1,3)(1,3).
Therefore, the distance between Tina and Rahul is |3−1|+|1−3|=4|3−1|+|1−3|=4, and we can prove that this is indeed the minimum possible distance under the given constraints. There may be other choices of seats which lead to the same answer as well.
For k=0k=0 in the first test case, Rahul can decide to sit at (2,2)(2,2) and Tina can decide to sit at (4,3)(4,3) so the distance between them would be |2−4|+|2−3|=3|2−4|+|2−3|=3.
Below are pictorial representations of the k=3k=3 and k=0k=0 cases for the first test case.
A possible seating arrangement for k=3k=3.A possible seating arrangement for k=0k=0.
------------------------------------------------------------------------------------------------------------------------
这个小题非常有意思,刚做的时候想的太复杂,还把每个边奇偶性全部考虑了,分成好几种情况,甚至调用bfs,多想了实在是。
题意知,k=0的时候,男孩一定会选一个靠中间最优位置,k=1时,为了让男孩离自己最远,女孩一定会把k=0时男孩的位置涂上粉红色。男孩愈挫愈勇,选择次优,k=3时,女孩一定把这个也涂粉红(我们知道每个点都有若干等价点,即使女孩不涂上一次那个点,也会涂等价点,其实还是等价于涂上一个点)
也就是说,男孩是把全部n*m个点走了个遍,我们枚举全部点,找到四个角距离它的最大距离,排个序,输出前n*m-1个,就是答案
# include <stdio.h>
#include<iostream>
# include<cstring>
# include<vector>
# include<algorithm>
using namespace std;
int dis(int x1,int y1,int x2,int y2)
{
return abs(x1-x2)+abs(y1-y2);
}
int b[100000+10];
int len;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m;
cin>>n>>m;
len=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
int ans1=dis(i,j,1,1);
int ans2=dis(i,j,1,m);
int ans3=dis(i,j,n,1);
int ans4=dis(i,j,n,m);
b[len]=max(ans1,ans2);
b[len]=max(ans3,b[len]);
b[len]=max(b[len],ans4);
len++;
}
}
sort(b,b+len);
for(int i=0;i<len;i++)
{
cout<<b[i]<<" ";
}
cout<<'\n';
}
return 0;
}