1368C - Even Picture
题意:
在一个全是网格的图中,你可以选择一些格子涂灰,请你涂一些格子并且满足以下条件:
- 所有格子必须是连通的
- 对于每一个格子,都有偶数个格子与它相邻
- 有恰好N个格子,它们的上下左右都有格子相邻
思路:
个人觉得下面这种图形是最完美的
每个格子都是偶数个相邻,只要将这种图形的边角不断的重叠就能构造出我们需要的上下左右都相邻的格子一个又一个
所以我们需要初始方块4个,和剩下N*3个格子用来构造每一个四边相邻的格子
代码附:
#pragma GCC optimize("Ofast","inline","-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5+10;
struct node
{
int x,y;
} a,b,c;
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin>>n;
cout<<n*3+4<<endl;
cout<<"0 0"<<endl;
a.x=0,a.y=1,b.x=1,b.y=0,c.x=1,c.y=1;
for(int i=0; i<=n; ++i)
{
cout<<a.x++<<" "<<a.y++<<endl;
cout<<b.x++<<" "<<b.y++<<endl;
cout<<c.x++<<" "<<c.y++<<endl;
}
return 0;
}