题目传送门

题意:贪吃蛇,要求长度奇数的蛇转弯次数为正奇数,长度偶数转弯次数为正偶数,且组成矩形。(北大出的题咋都和矩形相关!!!)

分析:构造找规律,想到就简单了。可以构造 宽:(n + 1) / 2, 长(n + 1) * n / 2 / (n + 1) / 2的矩形;

n = 5

1 2 4 4 5
3 2 4 4 5
3 3 5 5 5

n = 7

1 2 4 4 5 6 6
3 2 4 4 5 6 6
3 3 5 5 5
7 7 7 7 7 7

n = 8

1 2 4 4 5 6 6 8 8
3 2 4 4 5 6 6 8 8
3 3 5 5 5 7 6 8 8
7 7 7 7 7 7 6 8 8

n = 9

1 2 4 4 5 6 6 8 8
3 2 4 4 5 6 6 8 8
3 3 5 5 5 7 6 8 8
7 7 7 7 7 7 6
9 9 9 9 9 9 9 9

#include <bits/stdc++.h>

using namespace std;

struct Point {

	int x, y;

	Point () {}

	Point (int x, int y) : x (x), y (y) {}

};

char ans[5][100] = { "1 1\n1 1\n", "1 3\n1 1\n1 2 1 3\n", "2 3\n1 2\n1 3 2 3\n1 1 2 1 2 2\n",

                     "2 5\n1 4\n1 5 2 5\n1 1 2 1 2 2\n1 2 1 3 2 3 2 4\n",

                     "3 4\n1 4 1 5\n2 4 2 5 3 5\n2 2 2 3 3 3 3 2\n3 1 2 1 1 1 1 2 1 3\n"};

void print(vector<Point> &vec)	{

	printf ("%d %d", vec[0].x, vec[0].y);

	for (int i=1; i<vec.size (); ++i)	{

		printf (" %d %d", vec[i].x, vec[i].y);

	}

	puts ("");

	vec.clear ();

}

void DFS(int r, int c, int d, int n)	{

	if (d > n)	return ;

	vector<Point> vec;

	if (d == n)	{

		for (int i=1; i<r; ++i)	vec.push_back (Point (i, c));

		for (int i=r-1; i>=1; --i)	vec.push_back (Point (i, c + 1));

		print (vec);

		return ;

	}

	else	{

		for (int i=r-2; i>=1; --i)	vec.push_back (Point (i, c));

		for (int i=1; i<=r; ++i)	vec.push_back (Point (i, c + 1));

		print (vec);

		for (int i=1; i<=c; ++i)	vec.push_back (Point (r, i));

		vec.push_back (Point (r-1, c));

		print (vec);

	}

	DFS (r + 1, c + 2, d + 2, n);

}

int main(void)	{

	int n;

	while (scanf ("%d", &n) == 1)	{

		if (n < 5)	{

			printf ("%s", ans[n-1]);

		}

		else	{

			int x = (n + 1) / 2;

			int y = (n + 1) * n / 2 / x;

			printf ("%d %d\n", x, y);

			printf ("%s", ans[4]);

			DFS (4, 6, 6, n);

		}

	}

	return 0;

}

  

构造 hihocoder 1257 Snake Carpet (15北京I)的更多相关文章

  1. 【hihocoder 1257 Snake Carpet】构造

    2015北京区域赛现场赛第4题. 题面:http://media.hihocoder.com/contests/icpcbeijing2015/problems.pdf OJ链接:http://hih ...

  2. hihoCoder 1257 Snake Carpet(很简单的构造方法)

    2015 ACM / ICPC 北京现场赛 I 题 构造 注意一个小坑,每条蛇的输出是要从头到尾输出的. 还要注意的是,不能开数组去模拟构造过程,然后输出,那样会TLE的. #include < ...

  3. hihocoder 1084 扩展KMP && 2014 北京邀请赛 Justice String

    hihocoder 1084 : http://hihocoder.com/problemset/problem/1084 北京邀请赛 Just  String http://www.bnuoj.co ...

  4. UVALive 7269 Snake Carpet (构造)

    题目:传送门. 题意:构造出一个矩阵,使得矩阵含有n条蛇,每条蛇的长度是1到n,并且奇数长度的蛇有奇数个拐弯,偶数长度 的蛇有偶数个拐弯. 奇数和偶数分开构造,奇数可以是: 1357 3357 555 ...

  5. hihocoder #1236 Scores (15北京赛区网络赛J) (五维偏序,强制在线,bitset+分块)

    链接:http://hihocoder.com/problemset/problem/1236 思路; 有n个五维的向量,给出q个询问,每个询问是一个五维向量,问有多少个向量没有一维比这个向量大.并且 ...

  6. 二分+贪心 hihocoder 1249 Xiongnu's Land (15北京A)

    题目传送门 题意:有多个矩形分布在[0, 0]到[R, R]的的范围内,画一条竖线分割成两块矩形,使得左边包括矩形的面积大于等于右边的面积,在这个前提下使得画的竖线尽量远 分析:二分答案,当面积相等时 ...

  7. 暴力 hihoCoder 1251 Today Is a Rainy Day (15北京C)

    题目传送门 题意:一串数字变成另一串数字,可以单个数字转变,或者一类数字转变,问最少操作次数 分析:首先一类转换比单个转换优,先枚举找出最优的映射方案,然后将零碎的操作加上.6位6进制表示map映射, ...

  8. hiho1257 Snake Carpet

    题目链接:http://hihocoder.com/problemset/problem/1257 题目大意:有n条蛇 编号为1-n 每条蛇的长度跟编号相等 奇数编号的蛇必须拐奇数次(除了第一条)偶数 ...

  9. hihoCoder 1383 : The Book List 北京网络赛

    http://hihocoder.com/problemset/problem/1383?sid=950389 #1383 : The Book List 时间限制:1000ms 单点时限:1000m ...

随机推荐

  1. 使用python在SAE上搭建一个微信应用,使用有道翻译的api进行在线翻译

    1. 准备,先在使用python一步一步搭建微信公众平台(一)中基本实现自动回复的功能后,接着在有道词典上申请一个key,http://fanyi.youdao.com/openapi?path=da ...

  2. Internet信息服务找不到

    最近我的电脑也出现了Internet信息服务找不到的情况,在网络上查了很多方法都没一个正确的,后面通过下面的方法我成功了,故此我把这个经历也分享给大家,希望能够帮到您. 控制面板里“->添加/删 ...

  3. centos配置yum源

    1.登录mirrors.163.com 2.点击centos后面的“centos使用帮助” 3.下载CentOS7-Base-163.repo 4.sudo mv /etc/yum.repos.d/C ...

  4. Linux瑞士军刀:密码管理Keeweb

    导读 如今,我们依赖于越来越多的线上服务.我们每注册一个线上服务,就要设置一个密码:如此,我们就不得不记住数以百计的密码.这样对于每个人来说,都很容易忘记密码.我将在本文中介绍 Keeweb,它是一款 ...

  5. 使用 nginx + thin 的配置启动 rails server

    http://www.iwangzheng.com 在大师的指导下配置了新的服务器的nginx,通过top命令查看了服务器是8个cpu的,所以起了8个端口,把它们都映射到一个总的端口3600上,需要在 ...

  6. navicat连接oracle报错ORA-12737: Instant Client Light: unsupported server character set CHS16GBK”

    原文如下http://blog.163.com/cp7618@yeah/blog/static/7023477720142154449893/?COLLCC=1318255100& 这个工具可 ...

  7. 【GoLang】GoLang GOPATH 工程管理 最佳实践

    参考资料: MAC下 Intellij IDEA GO语言插件安装及简单案例:http://blog.csdn.net/fenglailea/article/details/53054502 关于wi ...

  8. 双系统重装windows后修复UBUNTU的GRUB

    1.问题背景 本子是win7和ubuntu10.04双系统,用的还算好,虽然只有在用QQ的时候还会用到win7,但还是保留windows.可是几天 前,win7突然总是蓝屏.死机,更重要是的背景变成黑 ...

  9. google maps js v3 api教程(1) -- 创建一个地图

    原文地址 google maps javascript官方文档:https://developers.google.com/maps/documentation/javascript/ 在创建地图之前 ...

  10. iOS通过设置info.plist参数使用iTunes导入导出Documents目录下的文件

    参考网址: http://my.oschina.net/hmj/blog/112592 http://www.cnblogs.com/taintain1984/archive/2013/05/27/3 ...