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

本文共 1122 字,大约阅读时间需要 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();
           
}
       
}
   
}
}

 

转载地址:http://gxiex.baihongyu.com/

你可能感兴趣的文章
Android笔记:通过RadioGroup/RadioButton自定义tabhost的简单方法
查看>>
ELCSlider
查看>>
XCode工程中 Targets详解
查看>>
Ext.Msg.prompt的高级应用
查看>>
Postgres 中 to_char 格式化记录
查看>>
关于联合索引
查看>>
开源 java CMS - FreeCMS2.7 登录移动端管理中心
查看>>
Android FM模块学习之三 FM手动调频
查看>>
Python 设置系统默认编码以及其他编码问题大全
查看>>
Vbs脚本编程简明教程之十四
查看>>
如何UDP/TCP端口是否通了
查看>>
pxe实现系统的自动化安装
查看>>
Redis高可用技术解决方案总结
查看>>
Scale Out Owncloud 高可用(2)
查看>>
何为敏捷
查看>>
HA集群之四:Corosync+Pacemaker+DRBD实现HA Mysql
查看>>
服务器定义
查看>>
我的友情链接
查看>>
分布式系统的面试题15
查看>>
个人代码库の创建快捷方式
查看>>