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)构 ...
随机推荐
- bzoj千题计划221:bzoj1500: [NOI2005]维修数列(fhq treap)
http://www.lydsy.com/JudgeOnline/problem.php?id=1500 1.覆盖标记用INF表示无覆盖标记,要求可能用0覆盖 2.代表空节点的0号节点和首尾的两个虚拟 ...
- XHR工厂的实现
ajax这种常见的开发模式已经遍布我们日常的开发之中了,ajax本质还是采用一种轮询的模式,就是隔一段时间去发送一次http请求,获取数据,然后显示在页面之上,当然,ajax比起新兴的WebScoke ...
- JavaScript1.6数组新特性和JQuery的几个工具方法
JavaScript 1.6 引入了几个新的Array 方法,具体的介绍见:New in JavaScript 1.6 .这些方法已经被写进了ECMA262 V5.现代浏览器(IE9/Firefox/ ...
- js如何用json 读取C#的Dictionary
1. .net中Controller里面的方法 /// <summary> /// 流程图 /// </summary> /// <returns>返回对象Json ...
- Xgboost理解
一.xgboost模型函数形式 xgboost也是GBDT的一种,只不过GBDT在函数空间进行搜索最优F的时候,采用的是梯度下降法也就是一阶泰勒展开:而xgboost采用的是二阶泰勒展开也就是牛顿法, ...
- 洛谷 P5089: CodeForces #500 (Div. 1) B / 1012B : Chemical table
题目传送门:洛谷P5089. 题意简述: 一张 \(n \times m\) 的表格,有一些格子有标记,另外一些格子没有标记. 如果 \((r_1,c_1),(r_1,c_2),(r_2,c_1)\) ...
- 管中窥豹:从Page Performance看Nand Flash可靠性【转】
转自:https://blog.csdn.net/renice_ssd/article/details/53332746 如果所有的page performace在每次program时都是基本相同的, ...
- KVM -> 虚拟化简介&虚拟机安装_01
什么是虚拟化? 在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU.内存.磁盘空间.网络适配器等),予以抽象.转换后呈现 ...
- vue里面使用Velocity.js
英文文档:http://velocityjs.org/ https://github.com/julianshapiro/velocity 中文手册(教程):http://www.mrfront.co ...
- jenkins主从从服务器发布脚本执行成功但总提示失败 FATAL: Remote call on XXXX failed
主从jenkins当调用 slave 执行编译脚本后提示如下错误,找了半天怎么也没有问题,后来忽然发现slave上java的版本和master不同,一个 1.8 一个 1.10,将slave降回1.8 ...