08 2021 档案

摘要:题目 分析 代码 阅读全文
posted @ 2021-08-31 19:51 __Anchor 阅读(34) 评论(0) 推荐(0)
摘要:题目 BSOJ3348【BZOJ4804】欧拉心算 分析 \[ \large \begin{split} \sum_{i=1}^n\sum_{j=1}^n\varphi(\gcd(i,j)) &=\sum_{d=1}^n\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_ 阅读全文
posted @ 2021-08-31 14:03 __Anchor 阅读(77) 评论(0) 推荐(0)
摘要:线性筛总结 意在说明线性筛的一般方法和介绍几种作者遇到过的可以线性筛的数论函数。 最基础的线性筛 首先我们必须要知道以下线性筛的最基础的知识,要知道每一个数都是被其最小质因子唯一筛掉的,线性筛的过程其实是在处理最小质因子! 如果不会最基础的线性筛的原理,请转模板题题解。 一些前置小知识 常见数论函数 阅读全文
posted @ 2021-08-31 13:06 __Anchor 阅读(107) 评论(0) 推荐(0)
摘要:题目 求 \[ \large \sum_{i=1}^{n}\sum_{j=1 \land i \not = j}^{m}(n\ mod\ i)(m\ mod\ j) \] P2260 [清华集训2012]模积和 分析 稍微转化一下(也就是把相同的减掉,然后把模按照意义直接拆开) \[ \large 阅读全文
posted @ 2021-08-31 09:42 __Anchor 阅读(67) 评论(0) 推荐(0)
摘要:题目 求: \[ \large \sum\limits_{k\ is\ prime}\sum\limits_{i=1}^n\sum\limits_{j=1}^m[\gcd(i,j)=k] \] P2257 YY的GCD 分析 根据结论,那么直接把后半写成: \[ \large \sum\limits 阅读全文
posted @ 2021-08-30 21:00 __Anchor 阅读(72) 评论(0) 推荐(0)
摘要:题目 求: \[ \large \sum\limits_{i=1}^n\sum\limits_{j=1}^m[\gcd(i,j)=k] \] 其中 \(n,m,k\le 5\times 10^4\) ,\(t\le 5\times 10^4\) 组数据。 P3455 [POI2007]ZAP-Que 阅读全文
posted @ 2021-08-30 19:17 __Anchor 阅读(35) 评论(0) 推荐(0)
摘要:题目 CF900D Unusual Sequences 给定一个数列的 \(\gcd\) 和总和,求这样的数列有多少个。(\(x,y\le 10^9\)) 分析 略解: 显然可以先转化为求 \(\gcd=1\) ,和为 \(n\) 的数列个数。 首先不考虑 \(\gcd=1\) 的条件,发现其实等价 阅读全文
posted @ 2021-08-30 13:08 __Anchor 阅读(61) 评论(0) 推荐(0)
摘要:前置知识 带*表示如果只是学会可以不会这个知识点,但是较难的题目里面需要用到。 狄利克雷卷积 详见数论函数&狄利克雷卷积。 线性筛 详见线性筛 整除分块 详见整除分块 *杜教筛 详见杜教筛 莫比乌斯函数 莫比乌斯函数的定义 \[ \large \mu(n)=\begin{cases} 1,n=1\\ 阅读全文
posted @ 2021-08-28 17:28 __Anchor 阅读(168) 评论(0) 推荐(1)
摘要:题目 有 \(n\) 个正整数 \(x_1…x_n\) ,初始时状态均为未选。有 \(m\) 个操作,每个操作给定一个编号 \(i\) ,将 \(x_i\) 的选取状态取反。每次操作后,你需要求出选取的数中有多少个互质的无序数对。 \(n,m\le 10^5\) 分析 刚开始难免想到直接每次枚举因数 阅读全文
posted @ 2021-08-27 21:34 __Anchor 阅读(96) 评论(0) 推荐(0)
摘要:容斥原理 加法原理与减法原理 加法原理是集合之间两两不相交的情况下计算并集的计算公式。 而在一般情况(即集合之间可以有交集的时候),需要使用容斥原理来计算并集当中的对象个数。 减法原理就是一种简单的容斥原理,即两个性质之间的容斥原理。 减法原理的符号描述:设 \(A1\) 为具有性质 \(P1\) 阅读全文
posted @ 2021-08-25 21:34 __Anchor 阅读(745) 评论(0) 推荐(1)
摘要:前言 作者讨论目前自己遇到的这一类问题的相关做法,并不代表没有更一般的问题和更优秀的做法,欢迎补充。 路径求交 因为这样类似的问题似乎很常见,所以这里讨论一下。 树上路径求交 给出两条路径 \((a,b),(c,d)\) 四个点两两求 \(LCA\),得到 \(x_1=lca(a,c),x_2=lc 阅读全文
posted @ 2021-08-25 15:56 __Anchor 阅读(772) 评论(0) 推荐(2)
该文被密码保护。
posted @ 2021-08-23 11:42 __Anchor 阅读(0) 评论(0) 推荐(0)
摘要:题目 CF906D Power Tower 分析 首先根据扩展欧拉定理,我们可以得到一个递归柿子。 又考虑到最多递归 \(\log\) 次,于是可以直接枚举递归即可。 注意快速幂的取模要满足扩展欧拉定理,同时 \(\varphi\) 的值可以存起来。。 代码 #include<bits/stdc++ 阅读全文
posted @ 2021-08-23 10:34 __Anchor 阅读(61) 评论(0) 推荐(0)
摘要:题目 P3747 [六省联考 2017] 相逢是问候 分析 首先根据扩展欧拉定理,可以知道每一个数最多取 \(\log\) 级别次模,也就是说一个点最多修改 \(\log\) 级别次就不会变了。 那么直接就是势能线段树的思想,直接线段树维护每一个区间的最小修改次数,然后每次暴力修改消耗势能,如果势能 阅读全文
posted @ 2021-08-23 10:11 __Anchor 阅读(89) 评论(0) 推荐(0)
摘要:题目 P4139 上帝与集合的正确用法 分析 根据扩展欧拉定理,直接把柿子丢去递归,并且可以在 \(\log V\) 次内必定可以递归成 \(1\) 。 于是线性筛预处理一下 \(\varphi\) 即可。 代码 #include<bits/stdc++.h> using namespace std 阅读全文
posted @ 2021-08-23 10:05 __Anchor 阅读(59) 评论(0) 推荐(0)
摘要:题目 P3166 [CQOI2014]数三角形 分析 数三点不共线显然不如数三点共线(其实是因为在这个之前做了一道不共线的 BZOJ3518点组计数。) 首先除去边角的三点共线,因为很好算,我们就可以只考虑斜着的三点共线。 直接枚举两个点代价太大,而枚举一个点信息又太少,于是考虑枚举第一个点和第三个 阅读全文
posted @ 2021-08-23 09:43 __Anchor 阅读(57) 评论(0) 推荐(0)
摘要:题目 P4140 奇数国 同时质数的值在这个题目当中只会取到前 \(60\) 个。 分析 因为题目给出的性质,很难不让人想到直接对于每一个数来维护每一个质因子的次数。 于是直接线段树维护即可,欧拉函数要算就直接使用计算式来做即可。 代码 #include<bits/stdc++.h> using n 阅读全文
posted @ 2021-08-23 08:49 __Anchor 阅读(54) 评论(0) 推荐(0)
摘要:题目 分析 根据欧拉函数性质7推论3 \(\Large \sum\limits_{i=1}^{n}{(i,n)}=\sum\limits_{i=1}^{n}{\sum\limits_{d|i}{\sum\limits_{d|n}{\varphi{(d)}}}}=\sum\limits_{d|n}{\ 阅读全文
posted @ 2021-08-23 08:44 __Anchor 阅读(66) 评论(0) 推荐(0)
摘要:题目 P5746 [NOI2002] 机器人M号 分析 这道题足以显示我 \(dp\) 水平真是菜到家了。。才做了不久又不会了。。 首先题目里面说: 对于编号为 \(m\) 的机器人,如果能把 \(m\) 分解成偶数个不同奇素数的积,则它是政客,例如编号 \(15\); 否则,如果 \(m\) 本身 阅读全文
posted @ 2021-08-21 15:51 __Anchor 阅读(242) 评论(0) 推荐(0)
摘要:题目 P2520 [HAOI2011]向量 分析 首先可以发现很多无用操作,转化成实际有用的只有 \(4\) 个操作,然后通过裴蜀定理,可以知道判断的条件。 最后分类讨论一下就行了。 具体可以见这篇题解 代码 鸽了。 阅读全文
posted @ 2021-08-21 14:58 __Anchor 阅读(43) 评论(0) 推荐(0)
摘要:题目 CF27E Number With The Given Amount Of Divisors 分析 不知道为什么这种提这么多。 根据因数和公式,发现质因数个数很少,于是直接搜索即可。 代码 #include<bits/stdc++.h> using namespace std; templat 阅读全文
posted @ 2021-08-21 12:00 __Anchor 阅读(55) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2021-08-21 11:56 __Anchor 阅读(0) 评论(0) 推荐(0)
摘要:题目 P4571 [JSOI2009]瓶子和燃料 分析 使用裴蜀定理可以很容易转化成:给 \(n\) 个数选择其中 \(k\) 个可以得到的最大公因数。 考虑最大公因数的求法,在唯一分解定理之下其实就是对质因数的指数取 \(min\) 。 于是对所有数分解因数,找到出现次数大于 \(k\) 的因数即 阅读全文
posted @ 2021-08-21 11:53 __Anchor 阅读(53) 评论(0) 推荐(0)
摘要:题目 P1445 [Violet]樱花 分析 \[ \large (x+y)n!=xy \large (n!)^2-(x+y)n!+xy=(n!)^2 \large (n!-x)(n!-y)=(n!)^2 \large (x-n!)(y-n!)=(n!)^2 \] 于是设 \(A=x-n!\) ,那 阅读全文
posted @ 2021-08-21 10:08 __Anchor 阅读(55) 评论(0) 推荐(0)
摘要:题目 P4397 [JLOI2014]聪明的燕姿 分析 根据因数和公式,显然一个数的质因数和质数都不会太多,类似反素数的套路。 所以直接搜索即可。 代码 #include<bits/stdc++.h> using namespace std; template <typename T> inline 阅读全文
posted @ 2021-08-21 08:59 __Anchor 阅读(65) 评论(1) 推荐(0)
摘要:题目 P3998 [SHOI2013]发微博 分析 大水题。 很经典的套路:直接维护并不好维护,于是考虑给自身打上加法标记,而如果和带有加法标记的点断开,则这个点的答案加上加法标记的值,如果需要连接,则这个点先减去当前的加法标记再连接。 而这里连/删得是无向边,所以两端都要减掉对方的加法标记,也要同 阅读全文
posted @ 2021-08-21 08:38 __Anchor 阅读(52) 评论(0) 推荐(0)
摘要:题目 UVA10140 Prime Distance 分析 区间筛模板。 首先如果我们想要知道一个数是不是质数,只需要判断其能不能被 \(\sqrt{V}\) 范围内的任意一个数整除即可。 而这里我们要求一个 \(10^6\) 级别的区间,不能一个一个判掉,那么我们可以借用筛法的“标记”的办法,直接 阅读全文
posted @ 2021-08-21 08:28 __Anchor 阅读(51) 评论(0) 推荐(0)
摘要:题目 P4035 [JSOI2008]球形空间产生器 分析 发现可以列出一个方程组,于是高斯消元求解。 代码 #include<bits/stdc++.h> using namespace std; template <typename T> inline void read(T &x){ x=0; 阅读全文
posted @ 2021-08-20 21:10 __Anchor 阅读(42) 评论(0) 推荐(0)
摘要:题目 P4570 [BJWC2011]元素 分析 完全不明白出题人是不是脑子出了点问题,数据范围出 \(1000\) ,一度让我以为是 \(n^2\log n\)。。 看上去很厉害,确实不太好想,但是如果知道这题要用线性基应该就明白了。 首先一个数存在线性基里面,它最多可以作为一位的基底。 也就是说 阅读全文
posted @ 2021-08-20 20:19 __Anchor 阅读(62) 评论(0) 推荐(0)
摘要:题目 P3857 [TJOI2008]彩灯 分析 线性基模板题。 直接构造线性基,然后可以构造的集合个数就是 \(2^n\) 。 代码 #include<bits/stdc++.h> using namespace std; template <typename T> inline void rea 阅读全文
posted @ 2021-08-20 20:13 __Anchor 阅读(64) 评论(0) 推荐(0)
摘要:前言 这个题还有个加强版:BSOJ6376【11.05模拟】草莓 大概是人均场切了。 题目 CF1000G Two-Paths 分析 首先这个路径一定是一条链加上若干回路的路径。 每次 \(x\) 到 \(y\) 的途中都可以进入子树进行获取贡献,为了尽可能大,我们可以先 \(dp\) 出每一个点到 阅读全文
posted @ 2021-08-20 20:10 __Anchor 阅读(87) 评论(0) 推荐(0)
摘要:题目 P2619 [国家集训队]Tree I 分析 经典 wqs二分。 wqs二分的本质是:首先看出答案对于个数 \(k\) 有单调性,是个凸包。 然后把“凸包”投射到“y轴”上,此时我们要求这个凸包的顶端必须是取到题目限制的 \(k\) 个时可以取到最大/小值,如果是 \(k+c\) 或者 \(k 阅读全文
posted @ 2021-08-20 20:00 __Anchor 阅读(69) 评论(0) 推荐(0)
摘要:题目 P3977 [TJOI2015]棋盘 分析 以为是个神题,其实是出题人题目描述有毒。 状态压缩+矩阵乘法优化dp。 每一个棋子是处在中间一行的。。 于是就很容易了,直接状态压缩,然后矩阵乘法维护转移即可。 代码 #include <bits/stdc++.h> using namespace 阅读全文
posted @ 2021-08-20 19:50 __Anchor 阅读(54) 评论(0) 推荐(0)
摘要:题目 P5610 [Ynoi2013] 大学 分析 似乎是个简单题,容易想到势能分析,每一个点最多被除 \(\log\) 次。 于是问题变成快速找到一个数的所有倍数的位置。 直接对每一个数开一个 \(set\) 存其倍数集合,找到后可以判断是否删掉,也就是区间删除,可以并查集实现。 代码 #incl 阅读全文
posted @ 2021-08-20 19:46 __Anchor 阅读(69) 评论(0) 推荐(0)
摘要:整除分块 一些引理 引理1 \(\large \forall \ a,b,c\in Z,\left \lfloor\dfrac{a}{bc}\right\rfloor=\lfloor\dfrac{\lfloor\dfrac{a}{b}\rfloor}{c}\rfloor\) 略证: \(\large 阅读全文
posted @ 2021-08-17 18:58 __Anchor 阅读(286) 评论(0) 推荐(2)
摘要:排列组合 基本计数原理 只作简单的介绍,不作严谨的定义的解释。 加法原理 在很多地方解释为**“分类”**。 把一个集合划分成若干个子集,那么大集合的对应对象数目可以用每一个部分的对象数目之和来表示。 整体等于部分之和。 如果划分出来的部分可以相交,那么还需要使用容斥原理来计算集合的对应数目。 乘法 阅读全文
posted @ 2021-08-16 21:25 __Anchor 阅读(404) 评论(0) 推荐(0)
摘要:update on 2021.9.3:大部分例题都被咕咕了,以后闲的没事再写吧 欧拉函数 定义 $\large \varphi{(x)}$表示在整数 \(\large [1,n]\) 中和 \(\large n\) 互质的数的个数. 写出来也就是:\({\large\varphi{(n)}= \su 阅读全文
posted @ 2021-08-16 15:11 __Anchor 阅读(188) 评论(0) 推荐(1)
该文被密码保护。
posted @ 2021-08-05 20:26 __Anchor 阅读(1) 评论(0) 推荐(0)
摘要:题目 分析 线性基有一个奇妙的性质: 于是我们可以把区间修改变成单点修改,然后就是直接线段树维护了。 时间复杂度 \(O(n\log{n}\log^2{V})\) 代码 #include<bits/stdc++.h> using namespace std; template <typename T 阅读全文
posted @ 2021-08-05 19:59 __Anchor 阅读(30) 评论(0) 推荐(0)
摘要:题目 分析 好像是叫:前缀线性基。 可以直接线段树做,三个$\log{}$的,也有两个的做法,这里介绍一种一个的做法。 直接在线性基里面多储存一个:当前这一位最右的位置。 维护就是:对于一个插入,如果当前位是1,并且位置更大,那么替换掉,把原本的当前位继续插入下去。 查询的时候就是如果当前位的有值并 阅读全文
posted @ 2021-08-05 19:55 __Anchor 阅读(37) 评论(0) 推荐(0)
摘要:题目 查询一个数在不去重集合异或和中的排名。 分析 直接贴题解了。 代码 #include<bits/stdc++.h> using namespace std; template <typename T> inline void read(T &x){ x=0;char ch=getchar(); 阅读全文
posted @ 2021-08-05 19:50 __Anchor 阅读(73) 评论(0) 推荐(0)
摘要:题目 分析 首先发现数据是随机的,于是可以考虑乱搞/期望正确的暴力算法。 发现题目中的 \(k=15\), 而很多地方都和二进制有关,甚至还有把一个串缩成一个数的。 于是可以想到把原串都按照16位一个数来做,同时也分成了16块,于是我们可以发现这样一件事:这16块当中必定有一块和字典里的是一模一样的 阅读全文
posted @ 2021-08-05 19:43 __Anchor 阅读(71) 评论(0) 推荐(0)
摘要:题目 据传是什么毛毛虫树,实际上可以转化成一道原题。 分析 首先这个划分感觉很$LCT$,但是也可以树剖。 想到可以打时间戳,然后树剖维护“相邻两个数相同的对数”即可。 这里可以直接维护,同时也有一个转化:数颜色段数。 前者稍微麻烦,后者直接就是原题P2486 [SDOI2011]染色。 时间复杂度 阅读全文
posted @ 2021-08-05 19:30 __Anchor 阅读(36) 评论(0) 推荐(0)