怎么说呢,这 LaTeX\LaTeXLATE X 真好看,爆了。
最近开始用 vector 了,真好用。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
可以看见 n≤3000n \leq 3000n≤3000 ,那么大致推算一下, ana_nan 肯定不会超过 10710^7107。 所以我们定义一个桶(vis),用来判断是否出现过。
那么考虑递推。先标记好 a1a_1a1 。判断当 ai−1−ka_{i-1}-kai−1 −k 是正整数时,并且借助桶来判断其是否已经出现。当同时满足这两个条件时我们定义 a[i]=a[i-1]-i 。否则任何一种情况我们都将其定义为 a[i]=a[i-1]+i [1]。那么注意要排序,输出要带空格。
时间复杂度 O(n+nlogn)O(n+n \log n)O(n+nlogn)。其中 O(n)O(n)O(n) 为递推复杂度, O(nlogn)O(n \log n)O(nlogn) 为排序复杂度。但注意,本代码常数并不小,只是在 n≤3000n \leq 3000n≤3000 的情况下没有问题。
空间复杂度 O(n)O(n)O(n)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 这里的 iii 既文中的 kkk ↩︎