[CSP-S模拟测试110]题解

也许是最后一篇了。

A.最大或

不错的签到题。

对于二进制位来说,高位的一个1比低位的所有1的贡献总和还要大。

显然,r必选,因为r中所有1的相对考前。那么考虑如何构造另一个数。

首先lr前几位相同的部分肯定是不能动的,所以从l,r不同那位开始贪心即可。如果r这位为0,只要构造的这个数爆不了r就让它的这位为1。

 

B.答题

题意可以转化为:求用所给的n个数组成的2n个数中的第k大值,k=ceil(2n×p)

然后就是裸的折半搜索了。分别搜出前一半和后一半的子集和,然后二分答案。

之后考虑如何求 从两组数里各取一个数,且令取出的两数和二分值的数对的个数。

先把两组数排序,然后枚举第一组选到哪个,第二组维护一个倒着扫的单调指针即可。

 

C.联合权值·改

其实正解挺神的……但是它w范围这么小 不用白不用啊。

直接开桶维护每个联合权值的个数,然后利用bitset去除三元环的情况即可。

我没脸

 

本文作者:Rorschach_XR

本文链接:https://www.cnblogs.com/Rorschach-XR/p/11838305.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Rorschach_XR  阅读(239)  评论(0编辑  收藏  举报
//雪花飘落效果
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起