C. Even Picture(构造)

Problem - 1368C - Codeforces

题意:

这幅画是连在一起的,也就是说,通过沿着一条灰色单元的链子,可以从任何一个灰色单元到达另一个灰色单元,路径上的每一对相邻单元都是邻居(也就是说,共享一个边)。
每个灰色单元都有偶数的灰色邻居。
恰好有n个灰色单元拥有所有的灰色邻居。其他灰色单元的数量可以是任意的(但要合理,以便它们都能被列出)。
小Leo现在正努力用特定的n的选择来画一幅美丽的图画,请帮助他,并提供任何一幅美丽图画的例子。

为了在你的答案中输出单元格坐标,假设工作表提供了一个直角坐标系,这样,其中一个单元格被选为原点(0,0),轴0x和0y是正交的,并与网格线平行,沿着任何方向的任何轴迈出一个单位,你就会到一个相邻的单元格。

输入
唯一的一行包含一个整数n(1≤n≤500)--在一幅美丽的图片中所有灰色相邻的灰色单元的数量。

输出
在第一行,打印一个整数k--图片中灰色单元的数量。由于技术原因,k不应超过5⋅105。

接下来的每一行都应该包含两个整数--图片中一个灰色单元的坐标。所有列出的单元格都应该是独立的,而且图片应该满足上述所有的属性。所有坐标的绝对值不应超过109。

我们可以证明,只要有足够小的k,就存在一个满足所有要求的答案。

题解:

给出一个无限大的网格图,要求你在上面涂色,每个涂色方格周围必须有偶数个涂色方格。要求构造出一种涂色方法:只存在n个涂色方格,周围有4个涂色方格(主要是理解题意)。

 

#include<iostream>
#include<vector>
#include<queue>
using namespace std;
vector<int> a[500050];
int vis[500050];
int ans[500050];
int main()
{
	int n;
	cin >> n;
	cout<<n+1+1+2*(n+1)<<"\n";
	for(int i = 0;i <= n+1;i++)
	{
		cout<<i <<" "<<i<<'\n';
	}
	int x = 1 ,y = 0;
	for(int i = 0;i <= n;i++)
	{
		cout<<x+i<<" "<<y+i<<'\n';
	}
	x = 0,y = 1;
	for(int i = 0;i <= n;i++)
	{
		cout<<x+i<<" "<<y+i<<"\n";
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值