// // // // // // // // // // // // // //

10.6 牛客

10.6 牛客

唯一感觉能做的一场

感觉能做的原因是有分


得分情况

100 + 0 + 50 + 5 = 155

T2 因不会写暴力而卑微爆零


题解

T1 串串串

发现只有奇偶有关 又都是 \(01\) 串 直接维护前缀和作差即为答案


代码


T2 方格计数

一个结论: 网格图中对于两个点 设 \(a\) 为其横坐标的距离 \(b\) 为其纵坐标的距离 那么这里面可以选择的点的个数有 \(g = \gcd(a, b) - 1\)

原题相当于在这条线上再找 \(n - 2\) 个球 放到 \(g\) 个盒子里面 相邻两个球的盒子编号至少为 \(k\) 这个东西的方案数为 \({g - (n - 1) \times (k - 1) \choose n - 2}\)

所以可以直接枚举网格中的两个点计算答案

复杂度 \(O(TW^2H^2)\)


对相同的 \(a, b\) 方案数相同 考虑枚举 \(a, b\) 算出答案后再乘上 \((W - a + 1) \times (H - b + 1)\)

复杂度 \(O(TWH)\)


代码


T3 树数树

一个节点 \(u\) 可以将子树中两个序列拼成一个序列 处理完 \(u\) 的父亲时 \(u\) 已经不用管了 可以用堆维护出 \(u\)\(u\) 的子树中的点能组成的序列 转移将所有子树的堆合并 取出最大的两个合并成一个 合并直接暴力启发式

复杂度 \(O(n\log^2n)\)


代码


T4 序列

放弃治疗

posted @ 2021-10-12 22:12  Blank_space  阅读(45)  评论(0编辑  收藏  举报
// // // // // // //