admin官方

算法一:x≤50x\leq 50

1 2 3 .. x x .. 3 2 1

算法二:x=2t−1x=2^t-1

1 2 3 .. t 1 2 3 .. t

算法三:xx 小

随机序列,然后 dp 计算好的子序列个数。

算法四:x≤107x\leq 10^7

假设可以有空的子序列。(把输入的 xx 加一)

假设是当前序列是 S1+S2S_1+S_2,其中 S1=1 2 3 … kS_1=1\ 2\ 3\ \dots\ k,S2S_2 为 1∼k1\sim k 的排列。

可以通过如下方法得到 S2S_2:

如果想让好子序列个数 +1+1:S1+S2=S1k+1k+1S2S_1+S_2=\quad S_1\quad k+1\quad k+1\quad S_2。

如果想让好子序列个数 ×2\times 2:S1+S2=S1k+1S2k+1S_1+S_2=\quad S_1\quad k+1\quad S_2\quad k+1。

最坏情况下的序列长度:4log⁡x4\log x。

代码和细节详见 std.cpp

期望得分:100100 分