1 solutions
-
0
STEP 1:简化题意 给出整数 n 输出一行有 1 到 n 的整数组成的(每个数分别有两个),满足所有相同数字之间的间隔连起来排序后为连续自然数。是不是还搞复杂了,自己看题目吧
STEP 2:思路分析 刚读完题目,感觉就题目给的那个时间复杂度还比较科学,但一看数据范围……
所以总得想别的办法,一开始怀疑是找规律好吧确实是,于是手动模拟了 n=5 和 n=7 的情况。
为了和样例 n=3 的情况结构对应得上,做了些许修改,最后得到以下结果:
n=3: 1 2 3 1 3 2 n=5: 1 2 3 4 5 1 3 5 2 4 n=7: 1 2 3 4 5 6 7 1 3 5 7 2 4 6 不难发现,它们都满足先是从 1 到 n 的连续自然数,再是 n 以内的奇数,最后是剩下的偶数。
真的就这么神奇? 证明出真理!!! 以 n=5 为例:
首先看奇数之间的间隔:1 和 1 之间的间隔是 4,也就是 n−1, 3 和 3 之间又是 3,即 n−2,一直到 n 和 n 之间的间隔,都是满足相互之间差为 1 的(好好想想,每个奇数起点比上一个奇数起点向右移动两个,终点向右移动一个,中间的间隔就少一个)。
那偶数呢?
为了和奇数接上,我们先从最后一个偶数开始(偶数之间的间隔明显多得多嘛……)。
4 和 4 之间的间隔是 5,也就是 n,推算的过程应该是 2×n−1−(n−1) 其中 2×n−1 是序列的长度(不算本身,所以减一),再减去 (n−1) 是因为算上这个偶数,一共有 n−1 项不属于这个间隔。
偶数也和奇数一个道理,每一个偶数起点比上一个偶数起点,向右移动两个,终点向右移动一个,中间的间隔就少一个。
STEP 3:避开坑点 据我所知,有些人居然还去拼凑偶数的做法,题目清清楚楚明明白白的告诉了我们——
n 是奇数! 而且好像偶数无解
- 1
Information
- ID
- 114
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By