会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
解题思路
扣住同一档不松手,喷出来的是一段颜色不变的点。松手再换档才多计一次。所以一个连续片段要扣的次数,就是它内部的单色段个数。题目要的是单色段个数恰好等于 t 的片段数,位置不同的片段分开计数。
- 从左到右扫描点列 c,把相邻同色的点并成一段,得到长度数组 L1,L2,…,Lr。
- 若 t=1,片段不能跨段。第 i 段内部的片段数是 Li(Li+1)/2。各段相加即可。这里起点和终点落在同一段,不能写成 Li×Li。
- 若 t≥2,枚举片段覆盖的第一段下标 i,最后一段就是 i+t−1。这段下标没有越界时,中间 t−2 段必须整段保留,两端各自至少留一个点,贡献是 Li×Li+t−1。
- t 大于段数 r 时没有合法片段,答案是 0。全部片段数不超过 m(m+1)/2,乘积要放进 64 位整数。