题目名称 1920. [CF 325E]红色按钮
输入输出 theredbutton.in/out
难度等级 ★☆
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 10
题目来源 Gravatarcstdio 于2015-03-24加入
开放分组 全部用户
提交状态
分类标签
图论 贪心
分享题解
通过:3, 提交:3, 通过率:100%
Gravatarcstdio 100 0.045 s 0.41 MiB C++
Gravatar一個人的雨 100 0.053 s 5.08 MiB C++
GravatarHexฏ๎๎๎๎๎๎๎๎๎ۣۣۣ 100 0.086 s 1.27 MiB C++
关于 红色按钮 的近10条评论(全部评论)
解题报告:
http://blog.csdn.net/wmdcstdio/article/details/44587751
(我好像非常喜欢给我做不出来的代码非常短的水题写正确性证明……这是病得电)
Gravatarcstdio
2015-03-24 19:11 1楼

1920. [CF 325E]红色按钮

★☆   输入文件:theredbutton.in   输出文件:theredbutton.out   评测插件
时间限制:1 s   内存限制:256 MiB

【题目描述】

Piegirl最终找到了红色按钮。你只有最后一次机会来改变必然的结局。

按钮下的电路包含n个节点,从0到n-1编号。为了让按钮失效,你需要按照特定的顺序来拆除这n个节点。节点0必须被最先拆除。在拆除节点i后,下一个被拆除的节点必须是(2*i) mod n或者(2*i+1) mod n。最后一个被拆除的节点必须是0.节点0必须被拆除两次,但其他节点必须被拆除恰好一次。

你的任务是找到任意一个可行的拆除顺序并输出它。如果没有这样的方案,输出-1.

【输入格式】

一行一个整数n(2<=n<=10^5)。

【输出格式】

输出拆除所有节点的顺序。如果这是不可能的,就输出-1.如果有多种不同的顺序,输出任意一种。

【样例输入输出】

Input
2
Output
0 1 0
Input
3
Output
-1
Input
4
Output
0 1 3 2 0
Input
16
Output
0 1 2 4 9 3 6 13 10 5 11 7 15 14 12 8 0

【来源】

CODEFORCES 325E