一天天的为了啥。|

lgh_2009

园龄:1年粉丝:1关注:0

CF vp合集

CF1936/1937

B

考虑计数只需要找到最后一个拐点和第一个拐点。

C

可以先花 n 次找到最大数,然后找一些位置 j 使得 (pi=n1)|pj 最大,最后找到最小的 pj。考虑为啥是对的,因为得让异或最大,而且是排列,所以其中一个取最大不劣。然后找另一个能尽量填补0的位置的数。

D

重了 CF733E。

官方题解带 log,非常无脑。其实把二分改成两个方向的队列维护即可线性。但是不会询问不独立。

E

不是看了眼 U 群完全不会。

首先 hint 1 是显然的。

考虑建图,答案为 1 到 n 的最短路。但是边的级别是 n2m 的,不可接受。

考虑把每个属性拉出来建图,对每个人的该属性排序,然后对相邻的点连一条边权为该属性之差的边。跑最短路即可。注意到预处理需要对自身连边。

F

感觉时间够是会的。

肯定想到拆位维护 b 的按位或值。

考虑如何合并。

维护每段最前/后的 1 的位置。

[l,mid].lastone=a,[mid+1,r].firstone=b

如果 max(amid)max(mid+1b),肯定贪心的选 a,否则选 b。
max a 可以用 ST 表,于是拆位算贡献即可。

复杂度 O(qlognlogv)

CF1934

A

拆贡献。

B

可以 dp 较小的一段,剩下的直接用 15.

C

查询三个角,死亡分讨。

D1

考虑如果一个数是形如 2x 的形式显然无解。

消掉高位的第一个 1 之后,构造 y 使得 y=2t1,对于 y 分讨。

y<m 肯定无解,y>m 说明肯定能构造出 m

D2

D1 中发现 2x 是必败态。

于是可以知道 popcount(x) 是偶数时先手必胜。

考虑先手处于必胜只需要每次拆那个 popcount 为偶数的数就行了。

本文作者:lgh_2009

本文链接:https://www.cnblogs.com/lgh-blog/p/18048983

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

posted @   lgh_2009  阅读(15)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起