博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
构造 - SGU 109 Magic of David Copperfield II
阅读量:5911 次
发布时间:2019-06-19

本文共 1177 字,大约阅读时间需要 3 分钟。

Magic of David Copperfield II 


 

Mean: 

analyse:

若i+j为奇数则称(i,j)为奇格,否则称(i+j)为偶格,显然每一次报数后,所有的观众要不同是指向奇格,要不同时指向偶格,这一点很容易启发我们利用奇偶性构造:

1 2 3 2 1

2 3 4 3 2
3 4 5 4 3
2 3 4 3 2
1 2 3 2 1

 

如上图所示,设n为奇数(若为偶数则可以加宽一列加高一行,并且标记最右边一列最下边一行都已经被删除了),最开始观众指向偶格(1,1),第一次报一个奇数后观众的手只能指向奇格,此时就可以把标号为1的格子都删掉;第二次再报另一个奇数,则观众的手只能指向偶格,此时又可以把标号为2的格子都删掉;以此类推,最后只剩下中央的一个格子,游戏在n-1步类完成。101~299有足够的奇数可以选择用来报数,而且次删掉部分格子后剩下的格子都是连通的,也就不存在孤立的格子。

 

Time complexity: O(N)

 

view code

import
java
.
util
.
*;
public
class
Solution
{
   
public
static
void
main(
String
[]
args)
   
{
       
Scanner
in
=
new
Scanner(
System
.
in);
       
int n
=
in
.
nextInt();
       
if (n
==
2)
       
{
           
System
.
out
.
println(
"3 1");
           
System
.
out
.
println(
"5 2 3");
       
}
       
else
       
{
           
System
.
out
.
print(n);
           
for (
int
i
=
0;
i
< n;
++
i)
           
{
               
for (
int
j
=
Math
.
max(
0
, n
+
1
-
i);
j
< n;
++
j)
               
{
                   
System
.
out
.
print(
" "
+ (
i
* n
+
j
+
1));
               
}
           
}
           
System
.
out
.
println();
           
for (
int
k
=
0;
k
< n;
++
k)
           
{
               
System
.
out
.
print(((n
+
1)
/
2
+
k)
*
2
+
1);
               
for (
int
i
=
Math
.
max(
0
,
1
-
k);
i
<
Math
.
min(n
, n
+
1
-
k);
++
i)
               
{
                   
System
.
out
.
print(
" "
+ (
i
* n
+ (n
-
k
-
i)
+
1));
               
}
               
System
.
out
.
println();
           
}
       
}
   
}
}

 

转载于:https://www.cnblogs.com/crazyacking/p/4867946.html

你可能感兴趣的文章
苹果发布Core ML 2
查看>>
“智能云”战略新品震撼发布,开发者如何快速上手?
查看>>
华为吴晟:分布式监控系统的设计与实现
查看>>
[deviceone开发]-do_Webview的基本示例
查看>>
亚马逊Alexa借助神经网络生成播音员声音
查看>>
比特大陆新一轮裁员50%,回应称系人员调整
查看>>
C# API中的模型和它们的接口设计
查看>>
反思总结然后整装待发
查看>>
当SetTimeout遇到了字符串
查看>>
服务器之间,相同帐号,实现免密钥登录
查看>>
MYSQL 的 IF 函数
查看>>
[nginx文档翻译系列] 控制nginx
查看>>
将 Measurements 和 Units 应用到物理学
查看>>
一道闭包题引发的思考
查看>>
人群估值一般性算法
查看>>
HTML/CSS 知识点
查看>>
如何优雅地关闭Go channel
查看>>
免费学习coursera的课程的操作办法
查看>>
SAE的Tornado开发经验
查看>>
一步一步给你的 Android app 加入聊天功能
查看>>