- 博客(24)
- 收藏
- 关注
原创 CF1845E Boxes and Balls
可以发现移动前后所有 1 的相对位置不变,所以转移时可以直接钦定第。然后发现,要将 &x& 个 1 挪出前 &i& 格,至少需要。格在操作过后 1 的个数与原来相差的值最大为。在这个范围里转移即可,时间复杂度。 表示:用 l 步使得前。暴力转移加滚动数组即可。
2025-04-05 16:28:03
542
原创 【无标题】
先证必要性,发现如果有一个合法排列,那么我们一定可以使它的第一项变为。位二进制表示,意为它等于线性基中这些数的异或和,于是使用格雷码即可。再证明充分性,如果线性基满足了条件,那么线性基里肯定恰有。,于是显而易见整个排列都可以被线性基表示。的数加入线性基中,我们有结论,都可以被线性基表示出。
2025-02-10 10:12:04
382
原创 CF468C Hack it!
设∑01018−1≡pmoda则∑a−p1018a−p−1≡0moda所以答案为 la−pr1018a−p−1易得 p81∗1018。
2025-01-23 16:38:28
429
原创 CF1368E
将 C 中顶点全部删除,就可以得到一个满足题意的解。:入度为 0,或所有入边都来自。暗示我们可以把顶点分成三组。组的元素个数一定小于。那么,如何划分这三组呢?:至少有一条入边来自。:至少有一条入边来自。
2024-12-26 20:45:24
447
原创 CF1725K
考虑使用并查集维护答案。对于目前每种数建立一个虚点,每个点初始父亲就是其权值对应的虚点。在所有操作时维护一个 set 表示现在存在哪些权值。的父亲改成新的虚点即可。在并查集的根对应的权值。内所有权值,将其合并到。,然后更新 set 即可。
2024-12-17 20:09:53
405
原创 CF1734F
表示选到二进制表示下的第 i 位(最低位为第 0 位),前面连续的 1 的个数的奇偶性为 j,前面的变化位数的奇偶性为 k 的选法数。那么看着如此大的数据范围,你想到了数位 dp。于是,原询问的答案等价于有多少个整数。在二进制下不同位的数量是奇数。
2024-12-17 18:09:26
947
原创 CF1771F
在查询的时候,能往左子树走就尽量往左子树走,如果不能往左子树走(即左子树权值异或和为 0),再往右子树走。(也就是在主席树上二分)因为它是出现次数奇数,而对一个数异或上奇数次有一个美好的性质:它不为。看了luogu里的题解才做出来。开一棵值域主席树,维护值域区间内权值的异或和。rand()有值域上限。
2024-12-16 20:25:18
90
原创 CF1767E
如果此时将后一半颜色的选择与否看成二进制位,那么此时可用的 T 集合的方案构成后缀 min 形式。只需要提前对 T 做预处理即可。对于每一半,枚举每个颜色的选择与否,判断是否与合法条件矛盾。得到两个合法选择集合 S 与 T。枚举 S 中每个方案,再枚举后一半中的颜色。可以根据前一半的选择与否,判断出该颜色此时是否必须被选择。而想到 meet in the middle。首先发现,合法条件即为 ∀i∈[2,n],将颜色拆成前一半和后一半各。 中至少有一个被选择。
2024-12-16 20:21:27
145
原创 P5670 秘籍-反复异或
个线段树对应的区间节点后把对应的每一位直接按位异或起来即可,单次合并一个区间节点的时间复杂度也是。之内,那么现在一个区间的 bitset 左移后后面的 x 位需要和前面的。考虑一个区间加法该怎么维护,我们发现我们可以对于区间加的值取模后控制在。单次下传和单次修改都是。的长度作为限制自然溢出即可,就相当取模。所以最后修改和下传的总时间复杂度就是。位即可,超过的部分我们直接用。位进行一个整体交换,这个就。最后查询总的时间复杂度就是。然后区间查询就直接找到。最后总的时间复杂度是。的样子可以通过此题。
2024-11-05 23:23:32
475
原创 CF1634E Fair Share
对于每一种数,肯定一半个数放在 L 中,另一半放在 R 中。所以我们把这种数第一次出现位置与第二次出现位置连线,把第三次出现位置与第四次出现位置连线,等等。考虑哪些点不能放在同一集合中,在它们之间连一条边,最后二分图染色判求出两个集合。对于每个数组,因为有一半放入 L,一半放入 R。所以也把数组相邻两个数相连边。当然直接存m个数组会炸掉 所以数据要先离散化。其实这是一道图论题。
2024-09-30 22:42:28
169
原创 CF1667E Half Queen Cover
考虑构造,考虑从 (k+1,k+1) 出发每次纵坐标增加 1 横坐标增加 2 让两个坐标之差相互错开,横坐标超过 n 时回到 k+2,不过在 n=3 会造成出现两个点在同一个对角线上的情况,不过在 n=3 的特例下这种方案仍然合法。将剩下的格子平移可以拼成 (n−k)×(n−k) 的正方形,该正方形的 2×(n−k)−1 条对角线都要由棋子的对角线覆盖。因此可以列出不等式 k≥2×(n−k)−1,化简得 k≥(2n−1)/3。因此棋子数量 k 的理论下界是 ⌈(2n−1)/3⌉。
2024-09-23 23:15:35
168
原创 CF1713E Cross Swapping
交换,那么我应该不操作 i 并不操作 j,或操作 i 并操作 j(转两次转回来了),即 i 与 j 操作情况相同。交换,那么我应该操作 i 并不操作 j,或操作 j 并不操作 i,即 i 与 j 操作情况相反。给定一个 n×n 的矩阵。一次操作可以给定一个 k 然后交换所有的 A。交换,其做法有两种:进行操作 i,或进行操作 j。我选择使用带权并查集维护操作情况相同或相反的关系。要求字典序最小,所以我们从上往下从左往右贪心。操作 i,就是把第 i 行和第 i 列交换。主对角线上的东西永远不变。
2024-09-21 23:51:08
216
原创 洛谷 P4616 [COCI2017-2018#5] Pictionary
考试时主要是在条件gcd(a,b)=m−i+1上被迷惑了,没有想到建树,以为是一道图论题。
2024-07-16 23:06:43
230
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1