CF1970B1 Exact Neighbours (Easy)

CF1970B1 Exact Neighbours (Easy)

题意

\(n\times n\) 的区域中有 \(n\) 座房子,且每列只有一个房子,你需要构造一个方案,使得第 \(i\) 座房子有一座房子 \(j\) 跟它的曼哈顿距离为 \(a_i(0\le a_i\le n)\),输出每座房子的位置和 \(i\) 对应的 \(j\),若没有方案输出 NO

所有 \(a_i\) 均为偶数。

思路

神秘1900题,可以斜线摆放每座房子,则每座房子都有距离为 \(0,2,\cdots,n\) 的房子,然后,就没了。

代码

#include <bits/stdc++.h>
using namespace std;
int n,a[200005];
signed main() {
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	puts("YES");
	for(int i=1;i<=n;i++)
		cout<<i<<" "<<i<<endl;
	for(int i=1;i<=n;i++)
		cout<<(i+a[i]/2>n?i-a[i]/2:i+a[i]/2)<<" ";
	return 0; 
}
posted @ 2025-03-26 10:57  WuMin4  阅读(11)  评论(0)    收藏  举报