【hihocoder 1257 Snake Carpet】构造
2015北京区域赛现场赛第4题。
题面:http://media.hihocoder.com/contests/icpcbeijing2015/problems.pdf
OJ链接:http://hihocoder.com/problemset/problem/1257
题意:长度依次为1到N的N条蛇,平铺在一个地毯上,互不相交,要求每条长度为奇数(偶数)的蛇恰好有奇数(偶数)个拐点,1、2除外。求可行的构造方案。
我的构造方法如下:

奇偶数分开,奇数始终保持L型向外扩展,偶数保持两行(列)和已有的块拼接。
注意偶数部分每隔2组进行一次90度的旋转,代码体现为判N是否能被4整除。
#include <cstdio>
using namespace std;
int n;
int H, W; void printOdd(int x, int y){
printf("%d %d ", x, y);
} void printEven(int x, int y){
printf("%d %d ", x, y+H);
} int main(){
while(~scanf("%d", &n)){
H = (n+)/;
W = n& ? n : n+;
printf("%d %d\n", H, W);
for(int i=; i<=n; i++){
if(i&){
int x = H, y = H - i/;
while(x > y){
printOdd(x, y);
x--;
}
printOdd(x, y);
y++;
while(y <= H){
printOdd(x, y);
y++;
}
}else{
if(n%== || (n+)%==){
int len = i/;
if(i% == ){
int x = H, y = i/;
while(x > H - len + ){
printEven(x, y);
x--;
}
printEven(x, y);
y++;
while(x <= H){
printEven(x, y);
x++;
}
}else {
int x = H - i/ + , y = ;
while(y < len){
printEven(x, y);
y++;
}
printEven(x, y);
x--;
while(y >= ){
printEven(x, y);
y--;
}
}
}else{
int len = i/;
if(i% == ){
int x = H - i/ + , y = ;
while(y < len){
printEven(x, y);
y++;
}
printEven(x, y);
x--;
while(y >= ){
printEven(x, y);
y--;
}
}else{
int x = H, y = i/;
while(x > H - len + ){
printEven(x, y);
x--;
}
printEven(x, y);
y++;
while(x <= H){
printEven(x, y);
x++;
}
}
}
}
printf("\n");
}
}
return ;
}
【hihocoder 1257 Snake Carpet】构造的更多相关文章
- 构造 hihocoder 1257 Snake Carpet (15北京I)
题目传送门 题意:贪吃蛇,要求长度奇数的蛇转弯次数为正奇数,长度偶数转弯次数为正偶数,且组成矩形.(北大出的题咋都和矩形相关!!!) 分析:构造找规律,想到就简单了.可以构造 宽:(n + 1) / ...
- hihoCoder 1257 Snake Carpet(很简单的构造方法)
2015 ACM / ICPC 北京现场赛 I 题 构造 注意一个小坑,每条蛇的输出是要从头到尾输出的. 还要注意的是,不能开数组去模拟构造过程,然后输出,那样会TLE的. #include < ...
- UVALive 7269 Snake Carpet (构造)
题目:传送门. 题意:构造出一个矩阵,使得矩阵含有n条蛇,每条蛇的长度是1到n,并且奇数长度的蛇有奇数个拐弯,偶数长度 的蛇有偶数个拐弯. 奇数和偶数分开构造,奇数可以是: 1357 3357 555 ...
- hiho1257 Snake Carpet
题目链接:http://hihocoder.com/problemset/problem/1257 题目大意:有n条蛇 编号为1-n 每条蛇的长度跟编号相等 奇数编号的蛇必须拐奇数次(除了第一条)偶数 ...
- UVaLive 7269 Snake Carpet (找规律,模拟)
题意:给定一个数字n,表示有n条蛇,然后蛇的长度是 i ,如果 i 是奇数,那么它只能拐奇数个弯,如果是偶数只能拐偶数个,1, 2除外,然后把这 n 条蛇, 放到一个w*h的矩阵里,要求正好放满,让你 ...
- UVALive - 7269 I - Snake Carpet
思路: 多画画就发现从五的时候可以这么填: 六的时候这么填: 七的时候这么填: 看出规律了吗? 没看出的话再画画把. #include <bits/stdc++.h> using name ...
- CF1153E Serval and Snake【构造】
题目链接:洛谷 这道题是很久以前NTF跟我说的,现在想起来把它做了... 我们发现,如果蛇的两头都在矩形里或矩形外,则询问为偶数,否则为奇数. 所以我们询问每一行和每一列,就能知道蛇的两头的横纵坐标了 ...
- JavaScript面向对象编程小游戏---贪吃蛇
1 面向对象编程思想在程序项目中有着非常明显的优势: 1- 1 代码可读性高.由于继承的存在,即使改变需求,那么维护也只是在局部模块 1- 2 维护非常方便并且成本较低. 2 这个demo是采用了 ...
- 容斥 或者 单调栈 hihocoder #1476 : 矩形计数 和 G. Snake Rana 2017 ACM Arabella Collegiate Programming Contest
先说一个简单的题目(题目大意自己看去,反正中文):hihocoder上的:http://hihocoder.com/problemset/problem/1476 然后因为这个n和m的矩阵范围是100 ...
随机推荐
- CSS之Hack
一.类内部Hack IE都能识别*;标准浏览器(如FF)不能识别*:IE6能识别*,但不能识别 !important, IE7能识别*,也能识别!important; FF不能识别*,但能识别!imp ...
- ubuntu下获取相应的内核源码
一直以为是apt-get install ,apt-get search 也搜索不到相关的包,结果不是. 其实是 apt-get source linux-image-$(uname -r) 必须要用 ...
- UVA_Cubic Eight-Puzzle UVA 1604
Let's play a puzzle using eight cubes placed on a 3 x 3 board leaving one empty square.Faces of cube ...
- 【POJ 3279 Fliptile】开关问题,模拟
题目链接:http://poj.org/problem?id=3279 题意:给定一个n*m的坐标方格,每个位置为黑色或白色.现有如下翻转规则:每翻转一个位置的颜色,与其四连通的位置都会被翻转,但注意 ...
- [破解] DRM-内容数据版权加密保护技术学习(上):视频文件打包实现
1. DRM介绍: DRM,英文全称Digital Rights Management, 可以翻译为:内容数字版权加密保护技术. DRM技术的工作原理是,首先建立数字节目授权中心.编码压缩后的数字节目 ...
- Unity编辑器扩展Texture显示选择框
学习NGUI插件的时候,突然间有一个问题为什么它这些属性可以通过弹出窗口来选中呢? 而我自己写的组件只能使用手动拖放的方式=.=. Unity开发了组件Inspector视图扩展API,如果我们要写插 ...
- Splay POJ3468(老题新做)
A Simple Problem with Integers Time Limit:5000MS Memory Limit:131072KB 64bit IO Format:%I64d ...
- Centos6.4在配置Tomcat7工作文件夹和虚拟路径
写在前面:网上博文非常多复制粘贴.我试过很不可能.所以我写了下面的测试版本. 1.tomcat设备 非常easy只需要下载tomcat7 tar包裹 运行命令:tar -zxvf tomcat-7.5 ...
- php中的short_open_tag的作用
在php的配置文件(php.ini)中有一个short_open_tag的值,开启以后可以使用PHP的段标签:(<? ?>). 同时,只有开启这个才可以使用 <?= 以代替 < ...
- http常见的get请求方式和set请求方式。
一.Get请求方式 以下是我写的一个用get请求方式获取api工厂中汇率的类. package com.example; import java.io.BufferedReader; import j ...