C在P的左边.因为C是左边密集右边稀疏,P是右边密集左边稀疏.
任意两个C或者任意两个P之间的间隔最大为1.因为如果两个P之间间隔为2,那么CP??PP中间的两个?只能是C,且相互之间的间隔为1,小于了最左边C的那个2.
但是上面的结论其实有4种特殊情况:
最左边有一个P,最右边有一个C.形如PCCPPC.
左边若干位全是P,剩下右边全是C.形如PPPPCCC.
其中前三个特殊情况都只能有一位是特殊的.不难发现,如果多加一位会产生形如PPCCPP这种不满足条件的结果.
于是我们可以注意到对于已经选定长度的C,PC越多,P的和越小.
于是我们根据4种情况,枚举C的长度.之后再通过二分找到PC的最大长度,就可以得到当前情况下指定C的长度后的可能数目.
显然PC越少P越多.所以我们可以通过二分得到做多能有多少个PC.