P11431 [COCI 2024/2025 #2] 差异 / Različitost 题解
发表于|更新于
|阅读量:
前言
来点不带脑子的做法,但有点卡常,在 COCI 的土豆评测机上过不去。
思路
不妨设 n≤m,且下文的所有下标均从 0 开始。
看见异或还要求和可以先拆位。
拆位后考虑对于每个 ai 求出其贡献,设 fi,j 为第 i 个数在第 j 次出现时会与谁异或,则有 fi,j=(fi,j−1+n)modm,初始状态为 fi,0=i。看到这种东西可以直接倍增,设 sumi,j 代表 ai 第 j 次出现时当前位已经累计遇到了多少个 1(那么 0 的个数就是 2j 减去 1 的个数),则有 sumi,j=sumi,j−1+sumfi,j−1,j−1。
于是对于 ai,其在最终序列中的出现次数为 ⌊nk⌋+[i<(kmodn)],倍增算完 sum 数组后直接统计即可,复杂度是 O(nlog2V)。
时限不怎么宽裕,但在 lg 评测机上压力不大。