hiho1257 Snake Carpet
题目链接:http://hihocoder.com/problemset/problem/1257
题目大意:有n条蛇 编号为1-n 每条蛇的长度跟编号相等 奇数编号的蛇必须拐奇数次(除了第一条)偶数编号的蛇必须拐偶数次(除了第二条)问能不能在这种约束条件下面用蛇构造成一个矩形
思路:构造题 肯定是有一种固定的构造方式,通过推可以发现矩形的长可以成为(n+1)/2 宽是n+((n&1)==0)
偶数很好做 因为直接在后面加就行了 奇数的时候可以发现通过前一个偶数和前一个奇数来向外面加一层
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
int type[];
void pre(){
type[]=;
type[]=;
for(int n=;n<=;n++){
type[n]=type[n-]+;
}
}
bool judge(int n){
if(n<=){
if(n==){
printf("1 1\n");
return true;
}
if(n==){
printf("1 1\n1 2 1 3\n");
return true;
}
if(n==){
printf("2 1\n1 1 1 2\n1 3 2 3 2 2\n");
return true;
}
}
return false;
}
void print(int n,int row,int col){
if(n&){
for(int i=;i<(n+)/;i++){
printf("%d %d ",row+i,col);
}
for(int i=;i<=n/;i++){
printf("%d %d%c",row+(n+)/-,col-i,i==n/?'\n':' ');
}
}
else {
int tmp=n/;
for(int i=;i<tmp;i++){
printf("%d %d ",row,col-i);
}
for(int i=tmp-;i>=;i--){
printf("%d %d%c",row+,col-i,i==?'\n':' ');
}
}
}
void solve(int n,int row,int col){
if(judge(n)) return;
if(n&){
solve(n-,row,col-);
print(n-,row,col-);
print(n-,row+(n-)/,col-(n+)/);
print(n,row,col);
return;
}
else {
solve(n-,row,col-);
for(int i=;i<n/;i++){
printf("%d %d ",row+i,col);
}
for(int i=n/-;i>=;i--){
printf("%d %d%c",row+i,col-,i==?'\n':' ');
}
return ;
}
return ;
}
int main(){
int n;
pre();
while(scanf("%d",&n)!=EOF){
printf("%d %d\n",(n+)/,type[n]);
solve(n,,type[n]);
}
return ;
}
/*
133
223 13344
22344 22135
44335
44555
偶数:
*****nn
*****nn
*****nn
奇数:
* * * * n-2 n
* * * * n-2 n
* * * * n-2 n
n-1n-1n-1n-2n-2n
n-1n-1n-1n n n
*/
hiho1257 Snake Carpet的更多相关文章
- UVALive 7269 Snake Carpet (构造)
题目:传送门. 题意:构造出一个矩阵,使得矩阵含有n条蛇,每条蛇的长度是1到n,并且奇数长度的蛇有奇数个拐弯,偶数长度 的蛇有偶数个拐弯. 奇数和偶数分开构造,奇数可以是: 1357 3357 555 ...
- 构造 hihocoder 1257 Snake Carpet (15北京I)
题目传送门 题意:贪吃蛇,要求长度奇数的蛇转弯次数为正奇数,长度偶数转弯次数为正偶数,且组成矩形.(北大出的题咋都和矩形相关!!!) 分析:构造找规律,想到就简单了.可以构造 宽:(n + 1) / ...
- UVaLive 7269 Snake Carpet (找规律,模拟)
题意:给定一个数字n,表示有n条蛇,然后蛇的长度是 i ,如果 i 是奇数,那么它只能拐奇数个弯,如果是偶数只能拐偶数个,1, 2除外,然后把这 n 条蛇, 放到一个w*h的矩阵里,要求正好放满,让你 ...
- 【hihocoder 1257 Snake Carpet】构造
2015北京区域赛现场赛第4题. 题面:http://media.hihocoder.com/contests/icpcbeijing2015/problems.pdf OJ链接:http://hih ...
- hihoCoder 1257 Snake Carpet(很简单的构造方法)
2015 ACM / ICPC 北京现场赛 I 题 构造 注意一个小坑,每条蛇的输出是要从头到尾输出的. 还要注意的是,不能开数组去模拟构造过程,然后输出,那样会TLE的. #include < ...
- UVALive - 7269 I - Snake Carpet
思路: 多画画就发现从五的时候可以这么填: 六的时候这么填: 七的时候这么填: 看出规律了吗? 没看出的话再画画把. #include <bits/stdc++.h> using name ...
- [LeetCode] Design Snake Game 设计贪吃蛇游戏
Design a Snake game that is played on a device with screen size = width x height. Play the game onli ...
- Leetcode: Design Snake Game
Design a Snake game that is played on a device with screen size = width x height. Play the game onli ...
- 2101 Problem A Snake Filled
题目描述 “What a boring world!”Julyed felt so bored that she began to write numbers on the coordinate pa ...
随机推荐
- C++ string中的find()函数
1.string中find()返回值是字母在母串中的位置(下标记录),如果没有找到,那么会返回一个特别的标记npos.(返回值可以看成是一个int型的数) #include<cstring> ...
- NFV论文集(二)
一 文章名称:VNF Placement with Replication for Load Balancing in NFV Networks 发表时间:2017 期刊来源:ICC: IEEE In ...
- 牛客练习赛 A题 筱玛的快乐
链接:https://ac.nowcoder.com/acm/contest/342/A来源:牛客网 筱玛的快乐 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语 ...
- 如何利用mui实现底部选择器(含日期选择器)?
1.第一步: 项目中应该引入相应的css和js文件,相关文件可到mui官网查询. <link rel="stylesheet" type="text/css&quo ...
- 亲测可以永久破解2018版本的pycharm
pycharm是很强大的开发工具,但是每次注册着实让人头疼.网络上很多注册码.注册服务器等等.但都只是一年或者不能用:为次有如下解决方案.亲测有效!!! 如果想让pycharm永久被激活,比如截止日到 ...
- Linux 光盘挂载步骤
mount -t fs_type device dir 挂载操作 常见的文件系统类型 Windows :ntfs.fat32 Linux:ext3.ext4.xfs 光盘: iso9660 挂载光盘: ...
- [转帖]Windows NT 之父 - David Cutler
Windows NT 之父 - David Cutler https://www.cnblogs.com/wangwust/p/6826200.html 曾经下过 夺路狂奔的电子书 但是还没看完.. ...
- 在Laravel中使用数据库事务以及捕获事务失败后的异常
Description 在Laravel中要想在数据库事务中运行一组操作,则可以在 DB facade 中使用 transaction 方法.如果在事务的闭包内抛出异常,事务将会被自动还原.如果闭包运 ...
- Day 5-7 exec 和元类的创建.
exec方法 元类 exec(str_command,globals,locals)参数1:字符串形式的命令参数2:全局作用域(字典形式). 如果不指定,默认globals参数3:局部作用(字典形式) ...
- JS中的<a>标签
<a>标签可定义锚.一个锚有两种用法: 通过使用 href 属性,创建一个到另外一个文档的链接 通过使用 name 或 id 属性,创建一个文档内部的书签 如果是在 HTML 5 中,它定 ...