摘要:
一道套路题,做过同类型的题目应该能够直接看出做法。 这道题首先询问方式很像 DS 题的询问方式,但是实际上你会发现这道题做法是不能纯 DS 的,或者说这道题根本就不需要 DS。 发现如果乘积和 LCM 要相同的话需要满足这个区间内没有任意两个数最大公约数大于 1,而最大公约数可以归约到质因数上。 所 阅读全文
摘要:
1. 前言 树上差分,是一种难度不高,思维量也不大的算法,应用范围比较窄但是快。 前置知识:差分,树上最近公共祖先(LCA)。 2. 详解 2.1 点上差分 先来看这么一个例题: 给出一棵 \(n\) 个点的树,每个点点权初始为 0,现在有 \(m\) 次修改,每次修改给出 \(x,y\),将 \( 阅读全文
摘要:
一道思维题。 首先我们可以发现实际上我们如果能够在 \(a \to b \to c\) 上的路径上将总和排的尽量小那么一定是最优的。 于是我们可以考虑求出 \(a \to b\) 的最短路以及 \(b \to c\) 的最短路然后其和的结果就是总的最短路,将小的丢到这些路径上面就好了 ……吗? 实际 阅读全文
摘要:
一道思维题。 首先我们需要转化一下题意。 对于两个相邻的区间 \([l_i,r_i],[l_{i+1},r_{i+1}]\),我们将这两个区间合并一下,得到能够连接这两个区间的线段长度:\([l_{i+1}-r_i,r_{i+1}-l_i]\)。 这样,问题就变成了有若干个固定位置的点,用这些点去覆 阅读全文
摘要:
一道思维题。 看题,发现输出 Yes 或者 No,就知道要判无解,因此首先来讨论无解的情况: 如果当前总牌数 \(s\) 为奇数,无解。 这是因为交换时有两张卡牌发生了变动,为偶数,且每张牌只能交换一次,因此如果总牌数是奇数无论如何都会有一张无法交换。 交换的任意时刻,自己牌数最大者大于当前可以交换 阅读全文
摘要:
一道套路题。 考虑将所有的横线分个类,左端点在边界上的为 1 类(L 类),右端点在边界上的为 1 类(R 类),左右都在边界上的随意分,然后将所有的竖线按照其 \(x\) 升序排序。 开两个值域线段树(能支持单点修改区间查询即可),一棵维护 L 类,一棵维护 R 类。 理论上一棵也可行,但是两棵理 阅读全文
摘要:
一些 update update 2021/11/12:修正了文章中的一些语言。 1. 前言 本篇文章将会对 2 - SAT 问题做一个讲解。 前置知识:强连通分量/缩点。 2. 详解 首先我们需要知道 2 - SAT 是什么。 实际上 2 - SAT 是 k - SAT 的一种特殊情况。 k - 阅读全文
摘要:
本题有两种算法,一种是 \(O(n \log^2 n)\) 树套树/cdq 分治算法,一种是 \(O(n\sqrt{n})\) 莫队与值域分块算法,这里只讲根号算法。 这道题就是一个树上数颜色问题,只是颜色被限定在一个区间。 如果你做过 P4396 [AHOI2013]作业,我相信你能一眼看出这道题 阅读全文
摘要:
首先看到这道题,每个软件有体积有价值,加上其有依赖关系,就能够想到这是道树上背包问题。 树上背包问题的方程就不再赘述了,不会的读者可以自行百度,这类经典问题网上讲解的还是挺多的。 如果软件 \(x\) 依赖 \(y\),那么就连边 \(y \to x\)。 然后你高高兴兴的打出了树上背包问题的代码, 阅读全文
摘要:
0. 一些 update update on 2021/7/17:增添了 P4151 [WC2011]最大XOR和路径 的一些说明。 1. 前言 本篇博文是作者学习线性基时候的一些专项训练,难度比数学/数论专题-专项训练:线性基#1稍微大了一点。 因为作者是个 OIer,本文只讨论 OI 中常见的线 阅读全文
摘要:
首先看到题目的时候,看见异或最小值,就需要想到可能是线性基,而这题正需要线性基。 对于 \(1 \to n\) 的路径而言,我们可以将这条路径拆成 2 部分:一条链 + 一些环。 相当于我们要求链的路径长度异或上所有环长度的最小值。 先看所有环长度的异或最小值,我们可以先用一遍 DFS 预处理出所有 阅读全文
摘要:
一道莫队好题。 我们需要考虑的是如何去统计一个区间内的符合题意的答案。 这里有两种做法: 做法一:树状数组/线段树。 我们可以开一个值域树状数组/值域线段树,在每一次莫队增/删的时候我们在对应位置进行单点修改操作,维护一下一个区间内的数的个数以及不同数的个数。 最后统计答案的时候,进行一次区间查找操 阅读全文
摘要:
1. 前言 本篇博文是作者学习线性基的专项训练。 数学/数论专题-学习笔记:线性基 本文默认你已经学会了线性基及其性质,及其简单应用。 2. 练习题 题单: P4570 [BJWC2011]元素 P3857 [TJOI2008]彩灯 P3292 [SCOI2016]幸运数字 P4570 [BJWC2 阅读全文
摘要:
这道题的解法是倍增 LCA + 线性基。 下面假设你已经学会了倍增 LCA 和线性基。 首先回顾倍增 LCA 的过程:通过倍增合并 \(f_{i,j}\) 到 \(f_{i,j+1}\) 上。 实际上线性基也是可以合并的,合并方式就是将一个线性基插入到另外一个线性基里面。 因此既然线性基可以合并,那 阅读全文
摘要:
本题做法:树链剖分 + 线性基。 下面默认读者学会了树链剖分与线性基。 首先对于 Query 操作,我们需要转化一下题意:对于路径上的点而言,是否能够选出一些点,使得这些点点权异或值为 0。 这么做的理由是因为如果不存在这样的点集,那么就不会出现两个不相同的集合其异或值相同。 看到异或值询问是否有 阅读全文
摘要:
这道题的解法:贪心+线性基。 由于线性基有一个优秀的性质:无论一个序列的线性基怎么变,其线性基内数的个数都是相同的,关键是看你怎么排列数的顺序,那么我们可以贪心。 考虑将所有石头按照魔力值从大到小排序,然后直接做线性基,能插入的数就加上其魔力值。 对于正确性证明:如果你对于线性基上面这个性质学过证明 阅读全文
摘要:
这道题首先我们可以将题中的控制开关状态转变成一个二进制数。 然后实际上题中所说的按下开关就是异或。 那么因此这道题要求方案数,实质上就是要求原序列能够构成的线性基中数的多少。 由于线性基有一个很优秀的性质:原数列与线性基能异或出来的数是相同的,因此实际上我们知道了线性基内有 \(cnt\) 个数,那 阅读全文
摘要:
设询问 \((l,r,z)\) 表示 \(\sum_{i=1}^{r}dep[LCA(i,z)]\)。 首先先对询问式做一个差分: \((l,r,z)=(1,r,z)-(1,l-1,z)\) 那么我们可以考虑将一个询问 \((l,r,z)\) 拆成两个询问 \((1,r,z)\) 和 \((1,l- 阅读全文
摘要:
1. 前言 线性基,是线性代数中的一个板块,专门处理异或问题。 注意作者是个 OIer,因此并不会涉及(或者是极少的)线性代数知识。 注意本文所讲线性基跟向量无关。 前置知识:二进制,位运算。 2. 详解 2.1 定义与性质 线性基的定义如下: 给出一个数列 \(a_1,a_2,...,a_n\), 阅读全文
摘要:
一道思维题。 首先题目上有 \(1 \leq b_{i,j} \leq 16\),而要求 \(b_{i,j} \mid a_{i,j}\),因此我们可以求一下 \([1,16]\) 内所有整数的 \(\operatorname{lcm}\): \(\operatorname{lcm}(1,2,... 阅读全文