zoj3823--构造
题目大意:
在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--构造的更多相关文章
- 学习笔记:Maven构造版本号的方法解决浏览器缓存问题
需要解决的问题 在做WEB系统开发时,为了提高性能会利用浏览器的缓存功能,其实即使不显式的申明缓存,现代的浏览器都会对静态文件(js.css.图片之类)缓存.但也正因为这个问题导致一个问题,就是资源的 ...
- 一步步构造自己的vue2.0+webpack环境
前面vue2.0和webpack都已经有接触了些(vue.js入门,webpack入门之简单例子跑起来),现在开始学习如何构造自己的vue2.0+webpack环境. 1.首先新建一个目录vue-wk ...
- About 静态代码块,普通代码块,同步代码块,构造代码块和构造函数的纳闷
构造函数用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种.特点:1:该函数的名称和所在类的名称相同.2:不需要定义返回值类型.3:该函数没有具体的返回值.记住:所有对象创 ...
- Eos开发——构造查询条件
1.ajax 方式 var data = { orgid :orgid,year:year ,month: month,type:type,sortField:'sellEmpname' ,sortO ...
- 【C++】类和对象(构造与析构)
类 类是一种抽象和封装机制,描述一组具有相同属性和行为的对象,是代码复用的基本单位. 类成员的访问权限 面向对象关键特性之一就是隐藏数据,采用机制就是设置类成员的访问控制权限.类成员有3种访问权限: ...
- Spring 设值注入 构造注入 p命名空间注入
注入Bean属性---构造注入配置方案 在Spring配置文件中通过<constructor-arg>元素为构造方法传参 注意: 1.一个<constructor-arg>元素 ...
- 并发包的线程池第二篇--Executors的构造
上一篇讲述了ThreadPoolExecutor的执行过程,我们也能看出来一个很明显的问题:这个线程池的构造函数比较复杂,对于不十分理解其运作原理的程序员,自己构造它可能体现和想象中不一样的行为.比如 ...
- 10、代码块、构造代码块、静态代码块及main方法之间的关系
1.普通代码块: 在方法或语句中出现在{}之间的类容就称为普通代码块,简称代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”,即顺序执行. /*下面第一个类时合法的 ...
- json 构造和解析
目录: (1)引入jar包: (2)json的构造: (3)json的解析: (4)遍历未知key. (1)java对json的处理,可借助org.json.jar. <!-- https:// ...
- c++拷贝构造和编译优化
#include <iostream> using namespace std; class MyClass { public: MyClass(); MyClass(int i); My ...
随机推荐
- Java——类谜题
1.令人混淆的构造器 代码如下格式: public class Confusing { private Confusing(Object o) { System.out.println("O ...
- 搭建git服务器及利用git hook自动布署代码
注意:服务器:Ubuntu Server 14.04,我的项目比较小,所有操作都使用root,建议最好新建一个用户(需要有管理员权限,否则在后面使用hooks自动部署代码时会出现各种权限问题,很蛋疼的 ...
- nexus 中央仓库
nexus 中央仓库 下载地址:http://www.sonatype.org/nexus/archived 下载最新版本 mkdir -p /opt/local/nexus tar zxvf nex ...
- (简单) LightOJ 1074 Extended Traffic,SPFA+负环。
Description Dhaka city is getting crowded and noisy day by day. Certain roads always remain blocked ...
- OPENCV图像特征点检测与FAST检测算法
前面描述角点检测的时候说到,角点其实也是一种图像特征点,对于一张图像来说,特征点分为三种形式包括边缘,焦点和斑点,在OPENCV中,加上角点检测,总共提供了以下的图像特征点检测方法 FAST SURF ...
- 总结分享十大iOS开发者最喜爱的库
该10大iOS开发者最喜爱的库由“iOS辅导团队”成员Marcelo Fabri组织投票选举而得,参与者包括开发者团队,iOS辅导团队以及行业嘉宾.每个团队都要根据以下规则选出五个最好的库:1)不能投 ...
- mysql中TPS, QPS 的计算方式
今天突然有个同事问题一个问题, mysqlTPS和QPS的计算公式是什么? 以前确实也没有关注过这个计算公式,所以查了下学习了下: 下面是参考内容. 在做db基准测试的时候,qps,tps 是衡量数 ...
- kvm 动态挂载硬盘
根据最新需求需要动态的给kvm下的windows虚拟机挂载硬盘,网上查看了很多资料终于试通了,在这里记录下方便自己回忆,同事可以给大家做做参考,如果有问题欢迎吐槽 环境:先说说我使用的环境,环境是使用 ...
- JS脚本语言(全称java script:网页里使用的脚本语言:非常强大的语言):基础语法
一.注释语法 1.单行注释// 2.多行注释/**/ 二.语法输出 1.alert(信息):弹出信息 2.confirm(信息):弹出一个和用户交互的对话框 3.prompt(信息):弹出一个可以让用 ...
- IOS开发-ObjC-NSString
NSString是oc语言Foundation框架中常用的类,我根据每个方法的功能将NSString的常用方法分为创建字符串.初始化字符串.判断和比较字符串.大写和小写相互转化.字符串的截取.类型转换 ...