CF1903
若 \(k>1\),冒泡排序;否则判断是否已经有序。
初始令 \(a_i=2^{30}-1\),然后对于每个限制,让 \(a_i\leftarrow a_i\&M_{i,j},\;\;a_j\leftarrow a_j\&M_{i,j}\)。
答案可以视作:总和 + 一个后缀 + 一个短一点的后缀 ……
除了总和是一开始就要算的,我们只要把每个和为正的后缀累加即可。
题意:一次操作使一个数 \(+1\),最多 \(k\) 次操作。问最终整个序列的按位与最大是多少。
直接看 D2,D1 略。
贪心,要尽可能让答案的二进制位变成 \(1\)。而答案的一个位上是 \(1\),则所有数的这一位都得是 \(1\)。
所以 D1 的解法:按位从高到低,如果当前位可能是 \(1\),就把所有数加到这一位是 \(1\)。
D2 的解法需要观察性质:当一个数被加到某一位是 \(1\),其更低位一定都是 \(0\)。
首先可以快速求出来答案的最高位是第几位,因为可以预处理每个数使第 \(i\) 位为 \(1\) 要加多少。
假设答案最高位为 \(w\),注意到 \(a_i<2^{20}\)。于是若 \(w\ge 20\),变换后所有数都是 \(2^w\)。若剩下 \(c\) 次操作,最终答案为 \(2^w+\lfloor\dfrac{c}{n}\rfloor\)。
剩下情况就是 \(w\le 19\)。假设现在当前答案 \(ans\),在贪第 \(i\) 位,我们要判断把所有数加到第 \(i\) 位是 \(1\) 的代价能否承担。(D1 的解法就是直接循环求和判断)
记录目前已经被加过的数的个数 \(cnt\),这些数目前剩下的所有位都是 \(0\),则贡献 \(cnt\times 2^i\)。
剩下的数只需考虑第 \(i\) 位是 \(0\) 的。这些数一定满足:之前 \(ans\) 的位都有。因为只有这样才不会在之前就被操作。
设这类数有 \(f_i\) 个,这类数低于 \(i\) 位的和是 \(g_i\),则贡献的答案是 \(f_i\times 2^i-g_i\)。
怎么求 \(f,g\)?这些东西满足高位在 \(ans\) 的位上有,同时第 \(i\) 位没有。高维后缀和。
把点分为两类:\(x\equiv y\pmod 2\) 和 \(x\not\equiv y\pmod 2\) 的。
起点已经确定,其实哪边赢只和终点是哪类点有关。
随机推荐
- freeswitch新增模块APP
概述 之前的文章中,我们讲解了freeswitch的源码基本结构,如何新增一个插件式模块,以及如何在模块中新增一个命令式API接口. freeswitch的架构非常适合这种业务开发模式,即以frees ...
- Redis 常用五种数据类型编码
转载请注明出处: 目录 Redis 的五种数据结构 Redis 数据结构的内部编码 1.String 1.1 常用命令 1.2 内部编码 1.3 典型使用场景 2. Hash 2.1 常用命令及时间复 ...
- 1. 在Windows10上使用dbca配置oracle19.3.0.0时,报错DBT-50000 无法检查可用内存。
1.如图所示,在安装过程中,我遇到了错误提示,无法检查可用内存,导致安装失败. 在咨询后,认为是内存不足导致的问题,便清理了内存,重新安装.但是依旧出现以上内容,检查自己的内存大小,远远大于其安装所需 ...
- RSA趣题篇(简单型)
1.n与p的关系 题目 ('n=', 288990088827100766680640490138486855101396196362885475612662192799072729620922966 ...
- 2023浙江省大学生信息安全竞赛技能赛初赛 部分wp
CRYPTO 小小数学家 1.题目信息 查看代码 19+49=? 96-31=? 86-3=? 20+47=? 29+55=? 35+35=? 81+42=? 73-16=? 52+48=? 0+56 ...
- Git-签名-user-email
- 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.11.26)
一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免 ...
- SQLServer的varchar与nvarchar的学习之二
SQLServer的varchar与nvarchar的学习之二 背景 昨天简单总结了多种数据库 varchar和nvarchar的区别与关系 今天想着能够分析一下数据库文件. 计划使用winhex 查 ...
- [转帖]jumpserver 添加Windows主机
jump server添加 Windows主机资产 添加Linux主机资产步骤我们可以参照 链接:jump server添加Linux主机资产 进行操作. 一.资产管理-资产列表-创建资产 IP根据自 ...
- [转帖]官网:Nacos的授权验证
https://nacos.io/zh-cn/docs/v2/guide/user/auth.html 注意 Nacos是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安 ...