随笔分类 - OJ——洛谷
摘要:Description Luogu传送门 Solution 莫比乌斯反演经典入门题。 题目里面各种推式子的过程也很经典。 话不多说,进入正文。 我们先不管题目,求 \(\sum\limits_{i = 1}^n\sum\limits_{j = 1}^ngcd(i, j)\) 下面就是一波愉快的推式子
阅读全文
摘要:Description Luogu传送门 Solution 不难发现,将其中一个手环中所有装饰物的亮度增加一个相同的非负整数 \(c\),可以转化成对其中一个手环增加 \(c\ (c \in Z)\)。那么最终的差异值就是: \[ \sum\limits_{i = 1}^{n}(a_i - b_i
阅读全文
摘要:Description Luogu传送门 Solution 好名字。 像我这种懒狗肯定是直接看简化版题意啊! 题意让我们求不连续的回文子序列个数,我们发现并不是很好求,所以转换一下思路,求: 回文子序列个数(可连续) - 回文子串个数 回文子串个数很容易求出来,就是 \(manacher\) 板子,
阅读全文
摘要:祭奠我逝去的一下午加一晚上 Description Luogu传送门 顺便 sto $Zhang_RQ$学长 orz Solution 这名字听起来就很高大上的样子(事实上确实如此 好吧其实我并没有打算推式子,因为 \(BJpers2\) 巨佬在他的题解中已经把式子推的很明白了,只是他的代码着实有些
阅读全文
摘要:emm……NTT左转去看各位神犇的博客吧QwQ 这里只贴代码及部分操作的推导过程。 首先是喜闻乐见的 NTT 多项式乘法板子(这个就不解释了) namespace NTT{ ll lim, len; inline ll qpow(ll a, ll b){ ll res = 1; while(b){
阅读全文
摘要:P2467 [SDOI2010]地精部落 Description Luogu传送门 Solution 神仙线性 \(dp\),然而还不会 之前贺了一遍题解,现在又忘了,以后找机会再看看吧。 那么这里说一下 组合数 + \(dp\) 的方法: 设 \(dp_{i, 0/1}\) 表示长度为 \(i\)
阅读全文
摘要:P3523 [POI2011]DYN-Dynamite Description Luogu传送门 Solution 经典树上 \(dp\)。 首先二分 \(mid\) 表示最远的距离。 设 \(f_{x}\) 表示距 \(x\) 最远的未被覆盖的关键点到 \(x\) 的距离,\(g_x\) 表示 \
阅读全文
摘要:P4198 楼房重建 Description Luogu传送门 Solution 线段树维护斜率,pushup时记录左儿子区间最大值,把右儿子合并上去。 详细题解:[P4198 楼房重建 题解 - xixike] P2824 [HEOI2016/TJOI2016]排序 Description Luo
阅读全文
摘要:Description Luogu传送门 Solution 不难想到用斜率来计算能看到多少栋楼房,由于哪些楼房能看到哪些不能被看到是固定的,所以不是单调队列优化$dp$什么的。 暴力做法是 \(O(n^2)\) 的,我们考虑用线段树来维护。 线段树里记录两个值,\(len\) 和 \(maxs\)。
阅读全文
摘要:Description 洛谷传送门 Solution 很明显的一道线段树维护区间题目。 查看一下标签不难发现,可以用差分来维护。 具体来说,对于操作 1。 我们给 \(l\) 加上 \(K\)。 \(l\) + 1 ~ \(r\) 加上 \(D\)(两个数之间的差)。 \(r + 1\) 减去 \(
阅读全文
摘要:Description 洛谷传送门 Solution 一道很巧妙的结论题。 我们观察到题目中是一个双向冒泡排序。然后问你要进行多少轮才能排好序。 我们首先对于原数组进行离散化。 考虑冒泡排序的过程(假设当前数组未排好序): 第一次:找出一个最大值放到最后面。 对于位置 \(x\),冒泡之后一定有一个
阅读全文
摘要:Description 洛谷传送门 Solution 这道题 \(CSP\) 前就计划着做来着,结果一直咕咕咕了,现在来补一下吧。 当时点开这道题主要是被题目吸引进来的,结果发现出题人是标题党,差评! 好吧,下面我们在来分析一下这道题。 我们首先考虑最优情况,其实这个是比较好想的。 不难发现,点击编
阅读全文
摘要:Description 洛谷传送门 Solution 我们发现我们是无法快速判断一个区间内我们需要修改哪些数,不需要修改哪些数的。同时我们观察到整个区间初始全为 0. 所以我们考虑对询问进行排序,按修改高度从低到高排序。 排完序后,我们对于每一个操作就相当于进行区间修改了(现在区间内的数一定小于等于
阅读全文
摘要:Description 洛谷传送门 Solution 这道题似乎能用很多种方法来做,我用的 \(fhq-treap\)。 本来我想的是维护两只平衡树,一个用来找区间,另一个来找区间最大值。 想了一会发现想假了。这样做完全不对。 于是去题解区看了一眼题解,发现似乎可以用莫队来做,但是没找到 \(fhq
阅读全文
摘要:Description 洛谷传送门 Solution 一道非常经典的线段树问题,下面我们来分析一下。 题目要求我们支持区间加,求区间平均值,求区间方差。 区间加和区间平均值都很简单,唯独这个区间方差要如何维护呢? 我们先来看一下方差的式子: \(len = r - l + 1\) \(S^2 = \
阅读全文
摘要:Description 洛谷传送门 似乎是一道前 \(Ynoi\),不过反正现在不是了。 Solution 题目名字已经暗示我们要使用线段树之类的数据结构了。 看一眼题面,好吧,就是线段树维护。 本题需要一点数学基础。 \(sin(a + b) = sin(a) * cos(b) + cos(a)
阅读全文
摘要:Description 给定 \(n\) 个模板串,以及 \(m\) 个查询串。 依次查询每一个查询串是多少个模板串的子串。 洛谷传送门 Solution 发现题解区好多用 SAM 的,这里提供一篇AC自动机做法的题解。 我们先对询问串建AC自动机,然后计算每一个文本串对每一个询问串的贡献。 那么这
阅读全文
摘要:Description 洛谷传送门 Solution 一眼就能想到线段树,但是线段树似乎也无法维护啊?那怎么做? 于是我们查看标签…… 发现……二分答案?这怎么二分答案?? 于是我们再回想一下题目要求计算什么:位置是 \(q\) 的数是多少。 而且只有一次询问。 既然是二分答案,那我们就二分呗。 假
阅读全文
摘要:Description 洛谷传送门 Solution \(Kruskal\) 重构树好题。 我们先按照水位 \(a\),建 \(Kruskal\) 重构树。具体来讲:按水位从高到低排序,每次选出剩余边中水位最高的一条边插入到树中,这样就建成了一个小根堆。 然后我们再来考虑询问。 对于一个水位线 \(
阅读全文
摘要:Description 洛谷传送门 Solution 注意到题目要求我们计算出最多能买多少个纪念品,所以容易想到二分。 我们二分最多能买多少个纪念品,把每个纪念品的实际花费计算出来,从小到大排个序,取出前 \(mid\) 个,判断花费是否合法即可。 Code #include <iostream>
阅读全文