CF1903

A

k>1,冒泡排序;否则判断是否已经有序。

B

初始令 ai=2301,然后对于每个限制,让 aiai&Mi,j,ajaj&Mi,j

C

答案可以视作:总和 + 一个后缀 + 一个短一点的后缀 ……

除了总和是一开始就要算的,我们只要把每个和为正的后缀累加即可。

D2

题意:一次操作使一个数 +1,最多 k 次操作。问最终整个序列的按位与最大是多少。

直接看 D2,D1 略。

贪心,要尽可能让答案的二进制位变成 1。而答案的一个位上是 1,则所有数的这一位都得是 1

所以 D1 的解法:按位从高到低,如果当前位可能是 1,就把所有数加到这一位是 1

D2 的解法需要观察性质:当一个数被加到某一位是 1,其更低位一定都是 0

首先可以快速求出来答案的最高位是第几位,因为可以预处理每个数使第 i 位为 1 要加多少。

假设答案最高位为 w,注意到 ai<220。于是若 w20,变换后所有数都是 2w。若剩下 c 次操作,最终答案为 2w+cn

剩下情况就是 w19。假设现在当前答案 ans,在贪第 i 位,我们要判断把所有数加到第 i 位是 1 的代价能否承担。(D1 的解法就是直接循环求和判断)

记录目前已经被加过的数的个数 cnt,这些数目前剩下的所有位都是 0,则贡献 cnt×2i

剩下的数只需考虑第 i 位是 0 的。这些数一定满足:之前 ans 的位都有。因为只有这样才不会在之前就被操作。

设这类数有 fi 个,这类数低于 i 位的和是 gi,则贡献的答案是 fi×2igi

怎么求 f,g?这些东西满足高位在 ans 的位上有,同时第 i 位没有。高维后缀和。

E

把点分为两类:xy(mod2)xy(mod2) 的。

起点已经确定,其实哪边赢只和终点是哪类点有关。

posted @   FLY_lai  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示