BZOJ 3101: N皇后 构造
3101: N皇后
题目连接:
http://www.lydsy.com/JudgeOnline/problem.php?id=3101
Description
n*n的棋盘,在上面摆下n个皇后,使其两两间不能相互攻击….
Input
一个数n
Output
第i行表示在第i行第几列放置皇后
Sample Input
4
Sample Output
2
4
1
3
Hint
100%的数据3<n<1000000。输出任意一种合法解即可
题意
题解:
不要问我这结论哪儿来的,我也不知道
以下是找到的N皇后一组解得构造法:
一、当n mod 6 != 2 或 n mod 6 != 3时,有一个解为:
2,4,6,8,...,n,1,3,5,7,...,n-1 (n为偶数)
2,4,6,8,...,n-1,1,3,5,7,...,n (n为奇数)
(上面序列第i个数为ai,表示在第i行ai列放一个皇后;... 省略的序列中,相邻两数以2递增。下同)
二、当n mod 6 == 2 或 n mod 6 == 3时,
(当n为偶数,k=n/2;当n为奇数,k=(n-1)/2)
k,k+2,k+4,...,n,2,4,...,k-2,k+3,k+5,...,n-1,1,3,5,...,k+1 (k为偶数,n为偶数)
k,k+2,k+4,...,n-1,2,4,...,k-2,k+3,k+5,...,n-2,1,3,5,...,k+1,n (k为偶数,n为奇数)
k,k+2,k+4,...,n-1,1,3,5,...,k-2,k+3,...,n,2,4,...,k+1 (k为奇数,n为偶数)
k,k+2,k+4,...,n-2,1,3,5,...,k-2,k+3,...,n-1,2,4,...,k+1,n (k为奇数,n为奇数)
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;scanf("%d",&n);
if(n%6!=2&&n%6!=3)
{
for(int i=2;i<=n;i+=2)
printf("%d\n",i);
for(int i=1;i<=n;i+=2)
printf("%d\n",i);
return 0;
}
else
{
int k=n/2;
if(k%2==0&&n%2==0)
{
for(int i=k;i<=n;i+=2)
printf("%d\n",i);
for(int i=2;i<=k-2;i+=2)
printf("%d\n",i);
for(int i=k+3;i<=n-1;i+=2)
printf("%d\n",i);
for(int i=1;i<=k+1;i+=2)
printf("%d\n",i);
}
else if(k%2==0&&n%2==1)
{
for(int i=k;i<n;i+=2)
printf("%d\n",i);
for(int i=2;i<=k-2;i+=2)
printf("%d\n",i);
for(int i=k+3;i<=n-2;i+=2)
printf("%d\n",i);
for(int i=1;i<=k+1;i+=2)
printf("%d\n",i);
printf("%d\n",n);
}
else if(k%2==1&&n%2==0)
{
for(int i=k;i<n;i+=2)
printf("%d\n",i);
for(int i=1;i<=k-2;i+=2)
printf("%d\n",i);
for(int i=k+3;i<=n;i+=2)
printf("%d\n",i);
for(int i=2;i<=k+1;i+=2)
printf("%d\n",i);
}
else
{
for(int i=k;i<=n-2;i+=2)
printf("%d\n",i);
for(int i=1;i<=k-2;i+=2)
printf("%d\n",i);
for(int i=k+3;i<=n-1;i+=2)
printf("%d\n",i);
for(int i=2;i<=k+1;i+=2)
printf("%d\n",i);
printf("%d\n",n);
}
}
}
BZOJ 3101: N皇后 构造的更多相关文章
- bzoj 3101 N皇后构造一种解 数学
3101: N皇后 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 70 Solved: 32[Submit][S ...
- BZOJ 3101: N皇后
3101: N皇后 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 178 Solved: 94[Submit][ ...
- 3101: N皇后
3101: N皇后 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 88 Solved: 41[Submit][S ...
- bzoj 2530 [Poi2011]Party 构造
2530: [Poi2011]Party Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 364 Solved: ...
- BZOJ 2217: [Poi2011]Lollipop 构造 + 思维
Description 有一个长度为n的序列a1,a2,...,an.其中ai要么是1("W"),要么是2("T").现在有m个询问,每个询问是询问有没有一个连 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- acm算法模板(1)
1. 几何 4 1.1 注意 4 1.2 几何公式 4 1.3 多边形 6 1.4 多边形切割 9 1.5 浮点函数 10 1.6 面积 15 1.7 球面 16 1.8 三角形 17 1.9 三维几 ...
- ACM-ICPC竞赛模板
为了方便打印,不再将代码放到代码编辑器里,祝你好运. ACM-ICPC竞赛模板(1) 1. 几何 4 1.1 注意 4 1.2 几何公式 4 1.3 多边形 6 1.4 多边形切割 9 1.5 浮点函 ...
- ACM主要算法
ACM主要算法ACM主要算法介绍 初期篇 一.基本算法(1)枚举(poj1753, poj2965)(2)贪心(poj1328, poj2109, poj2586)(3)递归和分治法(4)递推(5)构 ...
随机推荐
- Dubbo学习笔记9:Dubbo服务提供方启动流程源码分析
首先我们通过一个时序图,直观看下Dubbo服务提供方启动的流程: 在<Dubbo整体框架分析>一文中我们提到,服务提供方需要使用ServiceConfig API发布服务,具体是调用代码( ...
- HTML5 CSS Reset
最近在学习HTML和CSS,发现一个不错的模板,放于此处. /* html5doctor.com Reset Stylesheet v1.6.1 Last Updated: 2010-09-17 Au ...
- Nagios介绍
Nagios介绍 Nagios是一款功能强大.优秀的开源监控系统,它能够让你发现和解决IT架构中存在的问题,避免这些问题影响到关键业务流程. Nagios最早于1999年发布,它在开源社区的影响力是相 ...
- ARM linux内核启动时几个关键地址【转】
转自:http://www.cnblogs.com/armlinux/archive/2011/11/06/2396787.html 1. 内核启动地址1.1. 名词解释ZTEXTAD ...
- ASP.NET MVC环境下实现一个网站多个网站模板的方法
asp.net mvc下实现多个网站模板的方法,让ASP.NET一个网站有多套网站模板,不用的场景下使用不用的mvc 模版. 比如有默认,红,蓝,绿几种网站模板,客户可以根据自己喜好选择自己喜欢的网 ...
- 08 Go 1.8 Release Notes
Go 1.8 Release Notes Introduction to Go 1.8 Changes to the language Ports Known Issues Tools Assembl ...
- Ubuntu+Nginx+uWSGI+Flask应用
Ubuntu 18.04,Nginx 1.14.0,uWSGI 2.0.17.1,Flask 1.0.2,Python 3.6.5, 多日未更新博客,就是在忙着把自己的Flask应用在Ubuntu上运 ...
- Java 组合
组合: 在新类中产生现有类的对象,由于新的类是由现有类的对象所组成,所以这种方法称为组合 组合和继承都允许在新的类中放置对象,组合时显示的这样做,而继承则是隐式的这样做 组合技术通常用于想在新类中使用 ...
- 一个浏览器Fuzzing框架的学习
一个浏览器Fuzzing框架的学习 关于框架 之前是LCatro师傅在小密圈分享的他写的这个Fuzzing框架(不过我以前翻github时好像就看到过),但是之前一直没啥时间搞这方面,这两天研究学习了 ...
- SqlServer 中查询子节对应的上级自定义函数
CREATE FUNCTION [dbo].[FN_TopGetOrgByUserName] ( @UserName NVARCHAR(128) ) RETURNS @showOrg TABLE(id ...