【AGC 055 C】Weird LIS 题解

Description

传送门

Solution

这是一道神仙题。

考虑对于某个固定的 A A A 判断其是否合法,并得到合法的充分必要条件。

首先, A A A 的极差不得超过 1 1 1。这是为什么呢?考虑 P P P 的某个最长上升子序列 { P p 1 , P p 2 , ⋯   , P p k } \{P_{p_1},P_{p_2},\cdots,P_{p_k}\} { Pp1,Pp2,,Ppk}。对于每个位置 i i i,若 i ≠ P p 1 , i ≠ P p 2 , ⋯   , i ≠ P p k i \neq P_{p_1},i \neq P_{p_2},\cdots,i \neq P_{p_k} i=Pp1,i=Pp2,,i=Ppk,则有 A i = k A_i= k Ai=k;否则,若 i = P p x ( 1 ≤ x ≤ k ) i=P_{p_x}(1 \le x \le k) i=Ppx(1xk),那么删去 i i i 后依然存在上升子序列 { P p 1 , P p 2 , ⋯   , P p x − 1 , P p x + 1 , ⋯   , P p k } \{P_{p_1},P_{p_2},\cdots,P_{p_{x-1}},P_{p_{x+1}},\cdots,P_{p_k}\} { Pp1,Pp2,,Ppx1,Ppx+1,,Ppk},则有 A i ≥ k − 1 A_i \ge k-1 Aik1。因此极差必定不超过 1 1 1——换言之,序列由若干个 k k k k − 1 k-1 k1 构成。根据上述分析,不难更进一步得到结论——若 A i = k − 1 A_i=k-1 Ai=k1,那么 i i i 是所有 LIS 的公共位置,若删去 i i i 则会对 LIS 的长度有影响;若 A i = k A_i=k Ai=k,那么 i i i 不属于至少一个 LIS,删去 i i i 不会对 LIS 的长度有影响。

但是, A A A 的极差不超过 1 1 1 显然不是充要条件,比如 { 4 , 3 , 3 , 4 , 3 } \{4,3,3,4,3\} { 4,3,3,4,3} 就是个反例。

为进一步得到充要条件,我们以 A x = k A_x=k Ax=k 的众多 x x x 为分界点将序列划分为若干个连续区间 [ 1 , i 1 ) ( i 1 , i 2 ) ⋯ ( i x , n ] [1,i_1)(i_1,i_2)\cdots(i_x,n] [1,i1)(i1,i2)(ix,n],这些区间之间两两独立。

考虑其中一个连续区间 [ L , R ] [L,R] [L,R] 对 LIS 会有怎样的贡献。思考两个最极端的情况—— [ L , R ] [L,R] [L,R] 对 LIS 产生了最小可能以及产生了最大可能的贡献。。

先思考前者。不难发现,无论 [ L , R ] [L,R] [L,R] 的位置如何,我们总可以让它对 LIS 的贡献为 0 0 0。例如, [ L , R ] [L,R] [L,R] 是划分出的最后一段区间,我们完全可以在 P P P 中倒序填入最小的几个数 R − L + 1 , R − L , ⋯   , 1 R-L+1,R-L,\cdots,1 RL+1,RL,,1,没有任何贡献;再比如, [ L , R ] [L,R] [L,R] 是划分出的一段区间,我们完全可以在 P P P 中倒序填入最大的几个数 n , n − 1 , ⋯   , n − R + L n,n-1,\cdots,n-R+L n,n1,,nR+L,没有任何贡献。

再思考后者。可以发现, [ L , R ] [L,R] [L,R] 的最大贡献为 ⌊ R − L + 1 2 ⌋ \lfloor \frac {R-L+1} {2} \rfloor 2RL+1,这可以通过在 P P P 中依次填入两两配对的满足 x > y x>y x>y 的数对 ( x , y ) (x,y) (x,y) 得到。例如,在序列 { 1 , _ , _ , _ , _ , _ , _ , 8 } \{1,\_,\_,\_,\_,\_,\_,8\} { 1,_,_,_,_,_,_,8} 中,我们可以填入 ( 3 , 2 ) ( 5 , 4 ) ( 7 , 6 ) (3,2)(5,4)(7,6) (3,2)(5,4)(7,6) 变成 { 1 , 3 , 2 , 5 , 4 , 7 , 6 , 8 } \{1,3,2,5,4,7,6,8\} { 1,3,2,5,4,7,6,8}。不难发现, [ L , R ] [L,R] [L,R] 中没有 ⌈ \lceil 所有 LIS 都必须要用 ⌋ \rfloor 的位置,并且也使区间对 LIS 的贡献取到了最大值,岂不美哉?

通过上述两个思考,我们可以得到结论: [ L , R ] [L,R] [L,R] 对 LIS 的贡献在 [ 0 , ⌊ R − L + 1 2 ] [0,\lfloor \frac {R-L+1} {2}] [0,2RL+1] 中,且该值域区间中的所有值都能被取到。至于怎么证明,感性理解应该是再容易不过了;严谨证明的话本蒟蒻也不会,就抛一边了。

u u u 为满足 A i = k A_i=k Ai=k u u u 的个数; v = ∑ ⌊ R − L + 1 2 ⌋ v=\sum \lfloor \frac {R-L+1} {2} \rfloor v=2RL+1,即所有划分出的区间的最大可能贡献之和。综上所述,我们可以写出 A A A 合法的充分必要条件:

  • k − min ⁡ i = 1 n A i ≤ 1 k-\min_{i=1}^n A_i \le 1 kmini=1nAi1(极差不超过 1 1 1 的数学表达式)
  • u ≤ k ≤ u + v u \le k \le u+v uku+v(最小可能的总贡献是 u + 0 u+0 u+0,最大可能的总贡献是 u + v u+v u+v,而 LIS 是 k k k,所以就有这个式子了)

该如何计算答案呢?考虑枚举 u , v u,v u,v,并累加 ( u , v ) (u,v) (u,v) 对答案的贡献。

∑ u = 1 m ∑ v = 0 n ( u + 1 n − u − 2 v ) ( u + v u ) max ⁡ ( min ⁡ ( u + v , m ) − max ⁡ ( 3 , u ) + 1 , 0 ) \sum_{u=1}^m \sum_{v=0}^{n} { {u+1} \choose {n-u-2v}} {u+v \choose u} \max(\min(u+v,m)-\max(3,u)+1,0) u=1mv=0n(nu2vu+1)(uu+v)max(min(u+v,m)max(3,u)+1,0)

其中, ( u + 1 n − v − 2 u ) { {u+1} \choose {n-v-2u}} (nv2uu+1) 表示,将 n − v − 2 u n-v-2u nv2u 个遗留下的位置插入到 u + 1 u+1 u+1 个划分出的区间中,注意到任意数模 2 2 2 都是 0 0 0 1 1 1,因此每段区间只能插入 0 0 0 1 1 1 个,于是就是一个组合数的形式;另一方面, ( u + v u ) {u+v \choose u} (uu+v) 表示,把 u u u 个 LIS 的必须点和 v v v 个数对穿插在一起的方案数。最后一部分就表示 [ max ⁡ ( 3 , u ) , min ⁡ ( u + v , m ) ] [\max(3,u),\min(u+v,m)] [max(3,u),min(u+v,m)] 中的整数的数量,其中 min ⁡ ( u + v , m ) \min(u+v,m) min(u+v,m) 表示 k ≤ u + v , k ≤ m k \le u+v,k \le m ku+v,km 的限制, max ⁡ ( 3 , m ) \max(3,m) max(3,m) 表示 k ≥ 3 , k ≥ u k \ge 3,k \ge u k3,ku 的限制。

不过,在你开心地模拟完这个式子之后,你发现它过不了样例!!1

这是为什么呢?因为啊,我们完全没有考虑极差恰好为 0 0 0 的情况(也就是所有数都相等的情况),把这一类东西完全忽略了!于是,我们还需要在答案中加上这一部分。

那么,什么样的 k k k 可以使 A = { k , k , ⋯   , k } A=\{k,k,\cdots,k\} A={ k,k,,k} 合法呢?懒得分析了,直接打表,可以发现合法的 k k k 1 , 2 , 3 , ⋯   , ⌊ n 2 ⌋ 1,2,3,\cdots,\lfloor \frac n 2 \rfloor 1,2,3,,2n n − 1 n-1 n1。将答案加上这些数中不超过 k k k 且大于 1 1 1 的数的个数就行了。

综上所述,我们 O ( n 2 ) O(n^2) O(n2) 地解决了本题。

猜你喜欢

转载自blog.csdn.net/Cherrt/article/details/121384628