hihocoder 1257 Snake Carpet
题目链接:I题
题目大意:给你n个贪吃蛇,要求你去构造一个矩阵,使得编号为k的贪吃蛇长度为k,并且奇数编号贪吃蛇需要经过奇数个转折点,偶数编号贪吃蛇需要经过偶数个转折点,然后所有贪吃蛇刚好占满这个矩阵的所有各自且不能交叉,要求你输出每条贪吃蛇的路径,不是单纯的位置
题目思路:我们先构造出矩阵的大小,发现这样的一个关系:
1:1,11:1,1
1{1}
2:1,22:1,2
1,2,2{1,2,2}
3:2,33:2,3
2,2,3{2,2,3}
2,2,3{2,2,3}
4:2,54:2,5
2,2,3,4,4{2,2,3,4,4}
1,3,3,4,4{1,3,3,4,4}
5:3,55:3,5
1,2,2,3,5{1,2,2,3,5}
4,4,3,3,5{4,4,3,3,5}
4,4,5,5,5{4,4,5,5,5}
6:3,76:3,7
1,2,2,3,5,6,6{1,2,2,3,5,6,6}
4,4,3,3,5,6,6{4,4,3,3,5,6,6}
4,4,5,5,5,6,6{4,4,5,5,5,6,6}
7:4,77:4,7
2,2,3,4,4,5,7{2,2,3,4,4,5,7}
1,3,3,4,4,5,7{1,3,3,4,4,5,7}
6,6,6,5,5,5,7{6,6,6,5,5,5,7}
6,6,6,7,7,7,7{6,6,6,7,7,7,7}
然后我们就可以发现规律了,长宽跟n有关,偶数的情况直接在奇数的情况下构造一个右边2*n/2的矩阵就可以了,拐点刚好两个,奇数的情况我们需要考虑到它的n-3的情况,补上后三个就好了,然后代码递归去写就好了
#include <map>
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>using namespace std;
typedef long long ll;void fun(int cur){if(cur == 1){printf("1 1\n");return ;}if(cur == 2){printf("1 1\n");printf("1 2 1 3\n");return;}if(cur == 3){printf("2 1\n");printf("1 1 1 2\n");printf("1 3 2 3 2 2\n");return;}int tx = (cur+1)/2;int ty = (cur%2)? tx*2-1:tx*2+1;if(cur % 2 == 0){fun(cur-1);for(int i = 1; i <= cur/2; i ++)printf("%d %d ",i,ty-1);for(int i = cur/2; i >= 1; i--)printf("%d %d ",i,ty);printf("\n");return ;}else{fun(cur-3);for(int i = 1; i <= (cur-2)/2; i++)printf("%d %d ",i,ty-1);for(int i = 1; i <= (cur-2)/2+1; i++)printf("%d %d ",tx-1,ty-i);printf("\n");for(int i = 1; i <= (cur-1)/2; i++)printf("%d %d ",tx-1,i);for(int i = 0; i <= (cur-1)/2-1; i++)printf("%d %d ",tx,(cur-1)/2-i);printf("\n");for(int i = 0; i < cur/2+1; i++)printf("%d %d ",tx,ty-cur/2+i);for(int i = 0; i < cur/2; i++)printf("%d %d ",tx-i-1,ty);printf("\n");return ;}
}int main(){int n;while(~scanf("%d",&n)){printf("%d %d\n",(n+1)/2,(n%2)?(n+1)/2*2-1:(n+1)/2*2+1);fun(n);}return 0;
}
hihocoder 1257 Snake Carpet相关推荐
- hihoCoder 1257 Snake Carpet(很简单的构造方法)
2015 ACM / ICPC 北京现场赛 I 题 构造 注意一个小坑,每条蛇的输出是要从头到尾输出的. 还要注意的是,不能开数组去模拟构造过程,然后输出,那样会TLE的. #include < ...
- hiho1257 Snake Carpet
题目链接:http://hihocoder.com/problemset/problem/1257 题目大意:有n条蛇 编号为1-n 每条蛇的长度跟编号相等 奇数编号的蛇必须拐奇数次(除了第一条)偶数 ...
- 实时实例分割的Deep Snake:CVPR2020论文点评
实时实例分割的Deep Snake:CVPR2020论文点评 Deep Snake for Real-Time Instance Segmentation 论文链接:https://arxiv.org ...
- hihoCoder 网络流四·最小路径覆盖
题面带解释 hihoCoder感觉很好. 网络流的精华就是建图 #include<cstdio> #include<iostream> #include<algorith ...
- hihoCoder #1142 : 三分求极值
#1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一 ...
- hihocoder 后缀自动机专题
一.后缀自动机基本概念的理解 1.首先后缀自动机的状态是由子串的endpos来决定的 子串的endpos是指一个子串可以在原字符串的哪些位置进行匹配, endpos构成的不同集合划分成不同的状态 关于 ...
- hihoCoder 1051 补提交卡(贪心,枚举)
#1051 : 补提交卡 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过 ...
- hihoCoder week3 KMP算法
题目链接 https://hihocoder.com/contest/hiho3/problems kmp算法 #include <bits/stdc++.h> using namespa ...
- hihoCoder 第136周 优化延迟(二分答案+手写堆)
题目1 : 优化延迟 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho编写了一个处理数据包的程序.程序的输入是一个包含N个数据包的序列.每个数据包根据其重要程度不同 ...
- hihoCoder 1578 Visiting Peking University 【贪心】 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)...
#1578 : Visiting Peking University 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 Ming is going to travel for ...
最新文章
- strcpy函数的使用
- Azure Redis 系列之 Azure Redis部署
- 一个显示页码用的helper。。。
- leetcode - 368. 最大整除子集
- 深度优先搜索——单词接龙(洛谷 P1019)
- 两数据库Dblink数据抽取blob
- 跨境电商ERP系统有几大功能?
- python计算工资编程-免费直播 | 编程小白如何通过学习Python获得超高工资
- mqtt安装使用教程。(基于rabbitmq插件,docker部署,k8s部署,python教程)
- 基于OpenCV的计算机视觉入门(4)线段和形状的绘制
- SIGPIPE 13 和其他信号的对照表
- axure树与表格结合_语言开发7:语言迟缓孩子,家庭日常训练,干货满满!【附:表格及图片】...
- matlab2017b安装之后点桌面图标黑框闪退
- 别以为太简单!创建最好邮件营销内容的13个技巧
- PAT 乙级 1068 万绿丛中一点红 (20分)
- 浅谈高速公路服务区分布式光伏并网发电
- NR RLC Protocol General and Procedure
- 为Redmine的项目加上起止时间
- element的formatter失效的解决方案
- 如何从无到有做一个好关卡?
热门文章
- 彩虹php域名授权系统,彩虹云域名授权系统(正版源码+教程)
- linux telnet trying,telnet ip port 显示trying一般是什么情况?急。。。
- 选择导入过滤器endnote_EndNote 知网的 Import Filter (滤件制作实例) | 科研动力
- 皮尔森 统计学相关性分析_统计学之三大相关性系数(pearson、spearman、kendall)...
- 计算机设置开机密码时间屏保,电脑屏幕保护密码设置方法
- 【考研】数据库知识点总结
- java 创建一个类_java创建一个类
- python如何读取dbf文件_python2.7读取dbf文件的正确姿势
- 如何下载fatjar
- 爬虫(29)mongodb(下)