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】构造的更多相关文章

  1. 构造 hihocoder 1257 Snake Carpet (15北京I)

    题目传送门 题意:贪吃蛇,要求长度奇数的蛇转弯次数为正奇数,长度偶数转弯次数为正偶数,且组成矩形.(北大出的题咋都和矩形相关!!!) 分析:构造找规律,想到就简单了.可以构造 宽:(n + 1) / ...

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

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

  3. UVALive 7269 Snake Carpet (构造)

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

  4. hiho1257 Snake Carpet

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

  5. UVaLive 7269 Snake Carpet (找规律,模拟)

    题意:给定一个数字n,表示有n条蛇,然后蛇的长度是 i ,如果 i 是奇数,那么它只能拐奇数个弯,如果是偶数只能拐偶数个,1, 2除外,然后把这 n 条蛇, 放到一个w*h的矩阵里,要求正好放满,让你 ...

  6. UVALive - 7269 I - Snake Carpet

    思路: 多画画就发现从五的时候可以这么填: 六的时候这么填: 七的时候这么填: 看出规律了吗? 没看出的话再画画把. #include <bits/stdc++.h> using name ...

  7. CF1153E Serval and Snake【构造】

    题目链接:洛谷 这道题是很久以前NTF跟我说的,现在想起来把它做了... 我们发现,如果蛇的两头都在矩形里或矩形外,则询问为偶数,否则为奇数. 所以我们询问每一行和每一列,就能知道蛇的两头的横纵坐标了 ...

  8. JavaScript面向对象编程小游戏---贪吃蛇

    1 面向对象编程思想在程序项目中有着非常明显的优势: 1- 1 代码可读性高.由于继承的存在,即使改变需求,那么维护也只是在局部模块 1- 2 维护非常方便并且成本较低. ​ 2 这个demo是采用了 ...

  9. 容斥 或者 单调栈 hihocoder #1476 : 矩形计数 和 G. Snake Rana 2017 ACM Arabella Collegiate Programming Contest

    先说一个简单的题目(题目大意自己看去,反正中文):hihocoder上的:http://hihocoder.com/problemset/problem/1476 然后因为这个n和m的矩阵范围是100 ...

随机推荐

  1. WordPress 实用SEO插件总结

    原文地址:http://www.chinaz.com/web/2013/1122/328044.shtml#changyan_area WordPress- seo扩展插件众多,因此对于初学者来说会看 ...

  2. Liferay门户网站portal

    转自:http://www.oschina.net/p/liferay+portal Liferay 是一个完整的门户解决方案,基于J2EE的应用,使用了EJB以及JMS等技术,前台界面部分使用Str ...

  3. OpenWrt修改

    openwrt如何编译修改界面的顶部.底部信息.LOGO图片 2011-06-02 16:20:03  浏览次  以Atheros71xx为例,修改路径为:trunk/build_dir/target ...

  4. 一起来学canvas (前言)

    codeyy - 一依丫丫 一起来学canvas (前言)

  5. JsonKit 解析

    - (void)requestMapListData { NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"&qu ...

  6. Yeslab现任明教教主数据中心Nexus课程 视频教程 下载

    Yeslab现任明教教主数据中心Nexus课程 视频下载 视频教程下载目录: Yeslab现任明教教主数据中心Nexus课程第1部分.rar Yeslab现任明教教主数据中心Nexus课程第2部分.p ...

  7. MyEclipse 注册码

    MyEclipse 注册码和大家共享一下! 一:MyEclipse_6.0.1GA_E3.3.1_FullStackInstaller注册码 Subscriber:javp Subscription ...

  8. UBUNTU系统常用基本命令

    1.系统基本信息查询查看内核#uname -a 查看Ubuntu版本#cat /etc/issue 查看内核加载的模块#lsmod 查看PCI设备#lspci 查看USB设备#lsusb 查看网卡状态 ...

  9. Ffplay视频播放流程

    主框架流程 下图是一个使用“gcc+eygpt+graphviz+手工调整”生成的一个ffplay函数基本调用关系图,其中只保留了视频部分,去除了音频处理.字幕处理以及一些细节处理部分. 注:图中的数 ...

  10. 8.6中关于PSNR(峰值信噪比), img->quad的解释

    在JM代码中,多次遇到img->quad这个东西,而在官方代码中只给出了一句说明: 我开始看了好几遍都没有看懂,然后看到后面有snr,所以想应该和snr有关吧. 然后再代码中寻找snr,发现jm ...