题目链接:zoj 3823 Excavator Contest
题目大意:一个人开着挖掘机要在N*N的格子上面移动,要求走完所有的格子,并且转完次数要至少为n*(n-1) - 1次,
并且终点和起点必须都在边界上。
解题思路:构造,因为终点和起点必须在边界上,进去的同时得留出一条路径出来。
- 奇数
- 偶数
奇数的情况分两种(图上两点所代表的正方形构造方式是一样的,即13,9为一类,11,7为一类)
偶数分为四类(图上两点所代表的正方形构造方式是不一样的,即14,12,10,8各为一类)
这是我做过最恶心的构造题了。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 550;
const int dir[4][2] = {
{-1, 0}, {
1, 0}, {