同时我们要让
P
P
P的字典序最小,转化成
1
1
1在
Q
Q
Q中最靠前,在
1
1
1最靠前的前提下让
2
2
2最靠前
这是一个经典问题 不要再经典了我都wa过一遍了 可以建反图跑最大拓扑序解决
可以按编号从小到大考虑
Q
[
i
]
Q[i]
Q[i],我们发现只要找到
Q
[
i
]
Q[i]
Q[i]的前驱编号最大和后继编号最大连边即可。
复杂度
O
(
n
log
n
)
O(n\log n)
O(nlogn)
Nondivisible Prefix Sums
Hint1:所有元素之和不能被
P
P
P整除 显然
Hint2:众数出现次数不超过
n
2
\frac{n}{2}
2n的序列合法(可以倒着考虑
Hint3:有一个巧妙的转化。设众数为
x
x
x,将所有元素乘
x
−
1
x^{-1}
x−1,那么前缀和也会乘
x
−
1
x^{-1}
x−1
Hint4:巧妙的观察注意到每跨过
P
P
P都会消耗至少一个不为
1
1
1的数字
那么不为
1
1
1的数字至少有
∑
i
=
1
n
y
i
P
\frac{\sum_{i=1}^ny_i}{P}
P∑i=1nyi个
考虑构造方案以证明其等价性
考虑每次在末尾加上当前剩余数量最多的
x
x
x
若前缀和是
P
P
P的倍数,那么加入另一个数
y
y
y,否则加入
x
x
x
事实上,如果上述构造不合法的话,那么就会剩一堆相同的数,同时这些剩下的数 一定都是
1
1
1
问题在于,初始局面中众数是
1
1
1,如果众数改变的话,那么任何时刻众数和次众数的数量相差都不会超过
1
1
1,最后会剩一个数,又因为
P
P
P不整除
∑
y
i
\sum y_i
∑yi,所以最后这个数一定放得下
因此任何操作时刻,众数都是
1
1
1,并且最后剩了一堆
1
1
1放不下
不妨把我们构造的序列写出来,一定是写了一堆
1
1
1,然后写一个不为
1
1
1的数字
这样不为
1
1
1的数字恰好写了
∑
i
=
1
n
y
i
P
−
1
\frac{\sum_{i=1}^ny_i}{P}-1
P∑i=1nyi−1个,那么我们还会剩下不为
1
1
1的数字,就不满足全剩
1
1
1的假设了
雀实有点绕呵呵
把式子魔改一下,设众数出现次数为
k
k
k:
∑
i
=
1
n
(
P
−
y
i
)
[
y
i
≠
1
]
+
P
−
1
≥
k
\sum_{i=1}^n(P-y_i)[y_i\ne 1]+P-1\ge k
∑i=1n(P−yi)[yi=1]+P−1≥k
考虑总方案数
(
P
−
1
)
n
(P-1)^n
(P−1)n减去不合法的方案数
P
∣
∑
i
=
1
n
y
i
P|\sum_{i=1}^ny_i
P∣∑i=1nyi的情况可以递推
设
d
p
[
i
]
[
j
]
dp[i][j]
dp[i][j]表示考虑前
i
i
i个数,
∑
(
P
−
y
i
)
=
j
\sum (P-y_i)=j
∑(P−yi)=j的方案数
答案是
∑
k
∑
s
u
m
[
k
≥
s
u
m
+
P
]
[
k
≠
s
u
m
]
(
n
k
)
(
p
−
1
)
d
p
[
n
−
k
]
[
s
u
m
]
\sum_{k}\sum_{sum}[k\ge sum+P][k\ne sum]\binom{n}{k}(p-1)dp[n-k][sum]
∑k∑sum[k≥sum+P][k=sum](kn)(p−1)dp[n−k][sum]