题目大意:

在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. 从url中提取参数名和参数值(转)

    在已知参数名的情况下,获取参数值,使用正则表达式能很容易做到.js的实现方法如下: function getValue(url, name) { var reg = new RegExp('(\\?| ...

  2. CentOS 6.5 GIT 服务器搭建

    环境: Git Sserver IP: 10.6.0.2 Git Client IP: 10.6.0.126 1. 在 Git Server 安装软件所需的依赖包 yum install curl-d ...

  3. H3C inode for OSX 10.10 校园网客户端亲测可用

    1.打开终端 2.输入以下命令 sudo /library/StartupItems/iNodeAuthService/iNodeAuthService start 3.输入管理密码 4.打开客户端联 ...

  4. 【转】 完美配置Tomcat的HTTPS

    Tomcat配置HTTPS的文章到处都有,过程也比较简单,随后文中会转一段过来. 但对于启用APR情况下报异常“java.lang.Exception: Connector attribute SSL ...

  5. Laravel 安装

    其实,laravel的安装网上给了很多方法,但是你可以直接根据laravel中国官网http://www.golaravel.com/docs/4.1/installation/给出的三种方法,选择其 ...

  6. Sublime Text 2快捷键大全

    作者:zccst 2015-04-13 Sublime 插件安装 http://www.cnblogs.com/jingwhale/p/4421021.html 2014-09-17 Sublime ...

  7. iOS技术框架构和更新版本的技术特性

    Core OS层 Sytem 系统层包括内核环境,驱动及操作系统层unix接口.内核以mach为基础,它 负责操作系统的各个方面,包括管理系统的虚拟内存,线程,文件系统,网络以及进程间通讯.这一层包含 ...

  8. js - AO链 与 function

    先来看一下demo,如果你已经看出三个console.log分别输出什么.那直接关闭此笔记 function t(age) { console.log(age); var age = 99; cons ...

  9. tp框架中的静态验证

    //制定命名空间在Home 模块下Model文件夹下 如:namespace Home\Model; //引用父类 如:use Think\Model; //实例化表 如:class ZhuCeMod ...

  10. 了解HTML/HTML5中的download属性

    一.download属性是个什么鬼? 首先看下面这种截图: 如果我们想实现点击上面的下载按钮下载一张图片,你会如何实现? 我们可能会想到一个最简单的方法,就是直接按钮a标签链接一张图片,类似下面这样: ...