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 ;
}

最新文章

  1. linux系统的初化始配置(包括网络,主机名,关闭firewalld与selinux)
  2. 邮件开发——base64账号密码转换
  3. PHP获取IP地址
  4. 0527Sprint总结,读书笔记与提问
  5. struts2视频学习笔记 07-08(为Action的属性注入值,指定需要Struts 2处理的请求后缀,常用常量)
  6. MapInfo格式转arggis格式
  7. 1045 整数礼物 c语言
  8. tp数据表字段缓存
  9. 关于LookAt
  10. THINKPHP 3.2 PHP SFTP上传下载 代码实现方法
  11. jQuery全选、全不选、反选的简洁写法【实例】
  12. Flex父子窗口相互调用
  13. python 练完这些,你的函数编程就ok了
  14. Mac上配置GTK环境
  15. cookies,sessionstorage,localstorage的区别?
  16. oracle查看表结构命令desc
  17. Centos7+ASP.Net Core 运行
  18. Android-Kotlin-set/get方法的使用
  19. select.select的使用注意事项
  20. virtualbox+vagrant学习-2(command cli)-9-vagrant Plugin命令

热门文章

  1. ##解决 ViewPager 调用 notifyDataSetChanged()无刷新:原理、解决办法##
  2. PHP伪静态与短链接
  3. (step6.1.3)hdu 1875(畅通工程再续——最小生成树)
  4. IOS 排序算法
  5. linux虚拟主机管理系统wdcp系列教程之三
  6. Trie树|字典树(字符串排序)
  7. mysql 5.7忘记密码处理
  8. 创建httpd启动脚本并加入启动列表开机启动
  9. Ubuntu安装tftp服务器
  10. go import