题目传送门

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

分析:构造找规律,想到就简单了。可以构造 宽:(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. js实现table排序-sortable.js

    方案一.引用sortable.js包 /* <th class="thcss" style="width: 40px;" onclick="so ...

  2. 2015安徽省赛 B.求和

    题目描述 对于正整数n,k,我们定义这样一个函数f,它满足如下规律 现在给出n和k,你的任务就是要计算f(n,k)的值. 输入 首先是一个整数T,表示有T组数据 接下来每组数据是n和k(1<=n ...

  3. Sublime Text 2 入门及技巧

    看了 Nettuts+ 对 Sublime Text 2 的介绍, 立刻就兴奋了,诚如作者 Jeffrey Way 所说:“<永远的毁灭公爵>都发布了,TextMate 2 还没发”,你还 ...

  4. MVC数据验证

    深入浅出 MVC 数据验证 2.0 [附演示源码] 今天在这里给大家介绍一下MVC的数据验证框架. 在1.0版中,很多朋友提出了怎么使用客户端验证,今天找了一些资料,发现了客户端验证的方法. 1.MV ...

  5. css 属性

    部分属性在firefox 中添加-moz- safari 以及chrome  加上-webkit- opera 加上-o- ie9里可能需要-ms- jquery  中的css  操作  和一般的cs ...

  6. 一箭双雕打开Genesis

    打开记事本,将如下内容填入,保存时将后缀名改为bat @ ECHO 正在清理垃圾文件...del C:\tmp\*.* /f /q@ ECHO 清理完毕@ ECHO OFF@ ECHO.@ ECHO. ...

  7. 图像边缘检测——Sobel算子

    边缘是图像最基本的特征,其在计算机视觉.图像分析等应用中起着重要的作用,这是因为图像的边缘包含了用于识别的有用信息,是图像分析和模式识别的主要特征提取手段. 1.何为“图像边缘”? 在图像中,“边缘” ...

  8. Hadoop入门经典:WordCount

    转:http://blog.csdn.net/jediael_lu/article/details/38705371 以下程序在hadoop1.2.1上测试成功. 本例先将源代码呈现,然后详细说明执行 ...

  9. Reactor模式详解

    转自:http://www.blogjava.net/DLevin/archive/2015/09/02/427045.html 前记 第一次听到Reactor模式是三年前的某个晚上,一个室友突然跑过 ...

  10. display : -webkit-box-inline 的理解

    发现: 最近在做移动端的东西,说起移动端弹性盒子布局真是无往不利,用起来特别爽,我也是偶尔间发现的这个属性并且它的用法,在网上基本查不到这个属性的资料(个人看法).如果没有听说过(display:bo ...