题目大意:

在n*n(n<=512)的网格上,从边界某个点出发,经过每个点一次且回到边界上,构造出一种方案使拐弯的数量至少为n*(n-1)-1次。

构造方法:
我们可以手算出n=2~6时的方案。

n=2:

n=3:

n=4:

n=5:

n=6:

观察n=2与n=4、n=3与n=5的情况我们可以得到一种构造方案:

在构造n*n的方案时,先构造(n-2)*(n-2)的方案,再将其对一条斜向右下的直线作对称,然后在剩下的位置不停拐弯。

例如:
构造n=5时,先求出n=3的方案,再将其翻转,得到:

再在它剩下的7个格子里不停拐弯就可以了。注意n为奇数和偶数时转角处的不同。拐弯方式可参照手算出来的方案。

时间复杂度O(T*n^2*log2n)

具体看代码。

代码:

 #include<iostream>
 #include<cstdio>
 #include<cstring>
 using namespace std;
 ][],c[][];
 inline void D2(){
     a[][]=;a[][]=;a[][]=;a[][]=;
 }
 inline void D3(){
     a[][]=;a[][]=;a[][]=;
     a[][]=;a[][]=;a[][]=;
     a[][]=;a[][]=;a[][]=;
 }
 inline void F(int x){
     ;i<=x;i++)
     ;j<=x;j++)c[j][i]=a[i][j];
     ;i<=x;i++)
     ;j<=x;j++)a[i][j]=c[i][j];
 }
 inline void Solve(int x){
     ){D2();return;}
     ){D3();return;}
     Solve(x-);F(x-);cnt=(x-)*(x-);
     ;i<=x-;i++)
     )a[x-][i]=++cnt,a[x][i]=++cnt;][i]=++cnt;
     )a[x][x-]=++cnt,a[x][x]=++cnt,a[x-][x]=++cnt,a[x-][x-]=++cnt;][x-]=++cnt,a[x][x-]=++cnt,a[x][x]=++cnt,a[x-][x]=++cnt;
     ;i>=;i--)
     )a[i][x-]=++cnt,a[i][x]=++cnt;]=++cnt;
 }
 ];
 int Len;
 inline void Print(int x){
     ;x;x/=)S[++Len]=x%;
     );
 }
 int main()
 {
     scanf("%d",&T);
     while(T--){
         scanf("%d",&n);
         )D2();)D3();else Solve(n);
         ;i<=n;i++){
             ;j<n;j++)Print(a[i][j]),putchar(' ');
             Print(a[i][n]);putchar('\n');
         }
     }
     ;
 }

zoj3823

zoj3823--构造的更多相关文章

  1. 学习笔记:Maven构造版本号的方法解决浏览器缓存问题

    需要解决的问题 在做WEB系统开发时,为了提高性能会利用浏览器的缓存功能,其实即使不显式的申明缓存,现代的浏览器都会对静态文件(js.css.图片之类)缓存.但也正因为这个问题导致一个问题,就是资源的 ...

  2. 一步步构造自己的vue2.0+webpack环境

    前面vue2.0和webpack都已经有接触了些(vue.js入门,webpack入门之简单例子跑起来),现在开始学习如何构造自己的vue2.0+webpack环境. 1.首先新建一个目录vue-wk ...

  3. About 静态代码块,普通代码块,同步代码块,构造代码块和构造函数的纳闷

    构造函数用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种.特点:1:该函数的名称和所在类的名称相同.2:不需要定义返回值类型.3:该函数没有具体的返回值.记住:所有对象创 ...

  4. Eos开发——构造查询条件

    1.ajax 方式 var data = { orgid :orgid,year:year ,month: month,type:type,sortField:'sellEmpname' ,sortO ...

  5. 【C++】类和对象(构造与析构)

    类 类是一种抽象和封装机制,描述一组具有相同属性和行为的对象,是代码复用的基本单位. 类成员的访问权限 面向对象关键特性之一就是隐藏数据,采用机制就是设置类成员的访问控制权限.类成员有3种访问权限: ...

  6. Spring 设值注入 构造注入 p命名空间注入

    注入Bean属性---构造注入配置方案 在Spring配置文件中通过<constructor-arg>元素为构造方法传参 注意: 1.一个<constructor-arg>元素 ...

  7. 并发包的线程池第二篇--Executors的构造

    上一篇讲述了ThreadPoolExecutor的执行过程,我们也能看出来一个很明显的问题:这个线程池的构造函数比较复杂,对于不十分理解其运作原理的程序员,自己构造它可能体现和想象中不一样的行为.比如 ...

  8. 10、代码块、构造代码块、静态代码块及main方法之间的关系

    1.普通代码块: 在方法或语句中出现在{}之间的类容就称为普通代码块,简称代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”,即顺序执行. /*下面第一个类时合法的 ...

  9. json 构造和解析

    目录: (1)引入jar包: (2)json的构造: (3)json的解析: (4)遍历未知key. (1)java对json的处理,可借助org.json.jar. <!-- https:// ...

  10. c++拷贝构造和编译优化

    #include <iostream> using namespace std; class MyClass { public: MyClass(); MyClass(int i); My ...

随机推荐

  1. 转 使用 HttpClient 4 进行文件上传

    http://www.tuicool.com/articles/Y7reYb 1. 概述 本教程我们将描述如何使用 HttpClient 4进行一次多文件上传操作 . 我们将使用  http://ec ...

  2. stm32 IAP + APP ==>双剑合一(转)

    源:http://blog.csdn.net/yx_l128125/article/details/13591743 (扩展-IAP主要用于产品出厂后应用程序的更新作用,上一篇博文详细的对IAP 升级 ...

  3. PAT (Advanced Level) 1007. Maximum Subsequence Sum (25)

    简单DP. 注意:If all the K numbers are negative, then its maximum sum is defined to be 0, and you are sup ...

  4. Bootstrap Table的使用

    前言:BootstrapTable基于Bootstrap,Bootstrap基于jquery,所以需要引入jquery后再引入bootstrap. <link href="${ctx} ...

  5. expect ------提供用户名和密码的SSH自动登录脚本

    使用VPN,每次都要在Terminal上重复输入命令: ssh -D port user@host 出来密码提示符后,把复杂的密码拷贝下来,然后粘贴到Terminal,敲回车... 终于忍受不了这样的 ...

  6. jquery中如何以逗号分割字符串_百度知道

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  7. 在windos 环境下安装

    在windows 环境下安装node 和 StrongLoop需要一些几个步骤. 本人使用的安装软件,文章最后的分享. 1,安装Git: 2,安装Node.js: 3,安装npm: 4,安装Stron ...

  8. CABasicAnimation 基本动画 分类: ios技术 2015-07-16 17:10 132人阅读 评论(0) 收藏

    几个可以用来实现热门APP应用PATH中menu效果的几个方法 +(CABasicAnimation *)opacityForever_Animation:(float)time //永久闪烁的动画 ...

  9. UVA - 129 Krypton Factor (困难的串)(回溯法)

    题意:求由字母表前L个字母组成的字典序第n小的困难串.(如果一个字符串包含两个相邻的重复子串,则称它是"容易的串",其他串称为"困难的串".) 分析:回溯时,检 ...

  10. [noip2013]货车运输(kruskal + 树上倍增)

    描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多 ...