算法一:x≤50
1 2 3 .. x x .. 3 2 1
算法二:x=2t−1
1 2 3 .. t 1 2 3 .. t
算法三:x 小
随机序列,然后 dp 计算好的子序列个数。
算法四:x≤107
假设可以有空的子序列。(把输入的 x 加一)
假设是当前序列是 S1+S2,其中 S1=1 2 3 … k,S2 为 1∼k 的排列。
可以通过如下方法得到 S2:
如果想让好子序列个数 +1:S1+S2=S1k+1k+1S2。
如果想让好子序列个数 ×2:S1+S2=S1k+1S2k+1。
最坏情况下的序列长度:4logx。
代码和细节详见 std.cpp
期望得分:100 分