<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Fighter的博客]]></title><description><![CDATA[OI蒟蒻的刷题历程]]></description><link>https://blog.csdn.net/qq_30115697</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; qq_30115697]]></copyright><item><title><![CDATA[【题解】 P6834 【[Cnoi2020]梦原】]]></title><link>https://blog.csdn.net/qq_30115697/article/details/109486417</link><guid>https://blog.csdn.net/qq_30115697/article/details/109486417</guid><author>qq_30115697</author><pubDate>Wed, 04 Nov 2020 11:02:48 +0800</pubDate><description><![CDATA[分析
首先我们可以发现，题目中所说的“最优策略”，实际上就是每次不停地选尽量大的连通块，直到连通块中有一个节点上地果子被取完。此时这个节点相当于从树上被删去了，并且将它所在的连通块分割成了若干个小连通块。所以一个连通块能完整存在的时间，取决于连通块中aia_iai​的最小值。
于是我们先来考虑一种最简单的情况：如果一开始一条边都没有，我们所需的操作次数即为∑i=1nai\sum\limits_{i=1}^na_ii=1∑n​ai​。
然后我们考虑加上一条边，假设此时这条边连接了iii和jjj，那么根据上面的]]></description><category></category></item><item><title><![CDATA[【题解】 CF1359D 【Yet Another Yet Another Task】]]></title><link>https://blog.csdn.net/qq_30115697/article/details/109486369</link><guid>https://blog.csdn.net/qq_30115697/article/details/109486369</guid><author>qq_30115697</author><pubDate>Wed, 04 Nov 2020 11:00:58 +0800</pubDate><description><![CDATA[扫描线大佬真的强……
我来说说我的奇怪做法。
根据题意，只要先手选定一个区间之后，拿掉的一定是最大值，那么我们可以考虑枚举这个被拿掉的最大值。
于是考虑每个数作为最大值能影响的范围，显然可以用单调栈求出左右第一个比它大的。
记iii在[l,r][l,r][l,r]内是最大值，那么我们就是要从这个位置开始，分别向左向右找到一段和最大的子段。
先考虑右边，左边同理。我们对原序列进行前缀和，那么也就是要找到[i,r][i,r][i,r]中前缀和的最大值。所以我们用st表预处理，查询区间最大值即可。
代码中为了方便]]></description><category></category></item><item><title><![CDATA[【题解】 CF1359E 【Modular Stability】]]></title><link>https://blog.csdn.net/qq_30115697/article/details/109486329</link><guid>https://blog.csdn.net/qq_30115697/article/details/109486329</guid><author>qq_30115697</author><pubDate>Wed, 04 Nov 2020 10:59:36 +0800</pubDate><description><![CDATA[我们先拉出序列中最小的那个数aaa，假设现在有一个大于aaa的模数bbb，那么思考一下它们的顺序对答案的影响。
对于任意正整数xxx，我们要满足x%a%b=x%b%ax\%a\%b= x\%b\%ax%a%b=x%b%a，又因为b&gt;ab&gt;ab&gt;a，所以x%a%b=x%ax\%a\%b=x\%ax%a%b=x%a，所以上式即x≡x%b(moda)x \equiv x\% b\pmod ax≡x%b(moda)
然后设x=tb+yx=tb+yx=tb+y，那么tb+y≡y(moda)tb+y\]]></description><category></category></item><item><title><![CDATA[【题解】 UVA1707 【Surveillance】]]></title><link>https://blog.csdn.net/qq_30115697/article/details/109486163</link><guid>https://blog.csdn.net/qq_30115697/article/details/109486163</guid><author>qq_30115697</author><pubDate>Wed, 04 Nov 2020 10:54:08 +0800</pubDate><description><![CDATA[看到是环，于是我们非常套路地把它拉成链。
接着就要枚举一个起点iii，找到至少覆盖到i+len−1i+len-1i+len−1这个位置需要使用的最少线段数。
由于每个点都要计算，所以可以考虑预处理倍增，计算pi,jp_{i,j}pi,j​表示从iii开始，使用2j2^j2j条线段不能覆盖的第一个位置。转移即为pi,j=ppi,j−1,j−1p_{i,j}=p_{p_{i,j-1},j-1}pi,j​=ppi,j−1​,j−1​
pi,0p_{i,0}pi,0​即为覆盖iii点的线段的最大右端点，可以用差分的]]></description><category></category></item><item><title><![CDATA[【题解&杜教筛总结】51Nod1238 最小公倍数和V3]]></title><link>https://blog.csdn.net/qq_30115697/article/details/106524451</link><guid>https://blog.csdn.net/qq_30115697/article/details/106524451</guid><author>qq_30115697</author><pubDate>Wed, 03 Jun 2020 14:58:32 +0800</pubDate><description><![CDATA[前置知识：杜教筛。（不会点这里）。
大片公式预警！！！
题意
求∑i=1n∑j=1nlcm(i,j)\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}\text{lcm}(i,j)i=1∑n​j=1∑n​lcm(i,j)。（1≤n≤10101\leq n\leq 10^{10}1≤n≤1010）
题解
简单回顾
开始之前，先来回顾一下几个和杜教筛有关的式子（定义∗*∗为数论函数的狄利克雷卷积）：
KaTeX parse error: No such environment:]]></description><category></category></item><item><title><![CDATA[【题解】CF808G Anthem of Berland]]></title><link>https://blog.csdn.net/qq_30115697/article/details/104867085</link><guid>https://blog.csdn.net/qq_30115697/article/details/104867085</guid><author>qq_30115697</author><pubDate>Sat, 14 Mar 2020 20:19:19 +0800</pubDate><description><![CDATA[题意
传送门 luogu
题解
dp与kmp的巧妙结合。
设文本串s长度为nnn，模式串t长度为mmm。题面中赤裸裸地告诉你nm≤107nm\leq 10^7nm≤107，这就摆明了复杂度应该在O(nm)O(nm)O(nm)这个级别，这个nnn的复杂度肯定是扫一遍s，至于mmm，可以猜想是对于s的每个位置进行暴力的匹配。
我们可以考虑用dp来解决这个问题。设fif_ifi​表示t在s的前iii个位...]]></description><category></category></item><item><title><![CDATA[【题解】洛谷P6006 [USACO20JAN]Farmer John Solves 3SUM G]]></title><link>https://blog.csdn.net/qq_30115697/article/details/104867070</link><guid>https://blog.csdn.net/qq_30115697/article/details/104867070</guid><author>qq_30115697</author><pubDate>Sat, 14 Mar 2020 20:18:48 +0800</pubDate><description><![CDATA[题意
传送门
题解
发现n≤5000n \leq 5000n≤5000，那么我们自然想到O(n2)O(n^2)O(n2)预处理之后O(1)O(1)O(1)回答询问。
先考虑一个更简单的问题，如果f[i][j]f[i][j]f[i][j]表示在区间[l,r][l,r][l,r]中，满足k∈(l,r)，a[k]+a[l]+a[r]=0k \in (l,r)，a[k]+a[l]+a[r]=0k∈(l,r...]]></description><category></category></item><item><title><![CDATA[【题解】洛谷P5588 小猪佩奇爬树]]></title><link>https://blog.csdn.net/qq_30115697/article/details/102549950</link><guid>https://blog.csdn.net/qq_30115697/article/details/102549950</guid><author>qq_30115697</author><pubDate>Mon, 14 Oct 2019 15:44:27 +0800</pubDate><description><![CDATA[题意
传送门
题解
这里是一种时空复杂度均为O(nlog⁡n)O(n\log n)O(nlogn)的暴力做法。感觉这道题顺着思路想下去还是挺简单的。
题目的要求实际上是对于同种颜色的点，都必须在同一条链上。
那么我们自然想到把每一种颜色单独处理，先找到每种颜色中深度最大的那个点，显然如果这种颜色能符合一条链的条件，那么这个最深的点一定是链的一端，我们设它为xxx。
接着我们考虑另一端的位置。这里出...]]></description><category></category></item><item><title><![CDATA[P3647 [APIO2014]连珠线]]></title><link>https://blog.csdn.net/qq_30115697/article/details/102173385</link><guid>https://blog.csdn.net/qq_30115697/article/details/102173385</guid><author>qq_30115697</author><pubDate>Sat, 05 Oct 2019 21:19:50 +0800</pubDate><description><![CDATA[题意
传送门
题解
我们发现，如果一棵树的形态固定了，那么蓝线的方向一定是son[x]-x-fa[x]，那么我们就可以先随便定一个根进行DP。
我们设f[i][0]f[i][0]f[i][0]表示以iii为根的子树中，且iii不作为蓝线的中点能够得到的最大价值。同理，设f[i][1]f[i][1]f[i][1]表示以iii为根的子树中，iii作为蓝线的中点能够得到的最大价值。
我们分别对于两种情况...]]></description><category></category></item><item><title><![CDATA[【题解】CF316E3 Summer Homework]]></title><link>https://blog.csdn.net/qq_30115697/article/details/96422073</link><guid>https://blog.csdn.net/qq_30115697/article/details/96422073</guid><author>qq_30115697</author><pubDate>Thu, 18 Jul 2019 07:51:41 +0800</pubDate><description><![CDATA[题意
原题传送门
给定一个长度为nnn的序列A(n≤200000)A (n \leq 200000)A(n≤200000)，要求支持单点修改和区间加，并在线询问函数S(l,r)mod&amp;ThinSpace;&amp;ThinSpace;109S(l,r)\mod 10^9S(l,r)mod109的值，其中函数S(l,r)S(l,r)S(l,r)的定义如下：
S(l,r)=∑i=0r−lAi+...]]></description><category></category></item><item><title><![CDATA[【数据结构】线段树的扩展与应用]]></title><link>https://blog.csdn.net/qq_30115697/article/details/96094767</link><guid>https://blog.csdn.net/qq_30115697/article/details/96094767</guid><author>qq_30115697</author><pubDate>Tue, 16 Jul 2019 08:07:00 +0800</pubDate><description><![CDATA[线段树是一种非常基础的数据结构，但有的时候仅仅是普通的线段树无法满足需求，那么我们就要对其进行一些扩展。
Chapter1：标记永久化
实现
普通的线段树通过懒标记(Lazy Tag)以O(nlogn)O(nlogn)O(nlogn)的复杂度实现对序列的区间修改和查询。但有些时候想要向下push_downpush\_downpush_down标记和向上push_uppush\_uppush_up维...]]></description><category></category></item><item><title><![CDATA[【题解】CF1181D Irrigation]]></title><link>https://blog.csdn.net/qq_30115697/article/details/92803851</link><guid>https://blog.csdn.net/qq_30115697/article/details/92803851</guid><author>qq_30115697</author><pubDate>Wed, 19 Jun 2019 09:41:54 +0800</pubDate><description><![CDATA[题意
传送门
给定MMM个城市，每年会选出一个城市举办比赛，现给出前NNN年城市举办比赛的情况。在接下来的年份中，每年的比赛会在举办比赛次数最小的城市举办，如果有很多城市举办次数均为最小值，则在编号最小的城市举办比赛。现给出 QQQ个询问，每次询问第 KKK 年在哪个城市举办比赛。
分析
由于个人习惯，把题目中的nnn和mmm意义互换。
我们可以把问题抽象成有nnn个宽度相等高度不同的矩形，给出初...]]></description><category></category></item><item><title><![CDATA[【题解】P4178 Tree]]></title><link>https://blog.csdn.net/qq_30115697/article/details/91490399</link><guid>https://blog.csdn.net/qq_30115697/article/details/91490399</guid><author>qq_30115697</author><pubDate>Wed, 12 Jun 2019 10:04:08 +0800</pubDate><description><![CDATA[前置芝士
P3806 【模板】点分治1 。不过数据真是水的可以，第一次我数组开小，过了；第二次我分治的时候没找中心，还是过了……所以也可以做P4149 Race 。
题意
和点分治模板很像：求树上距离小于等于kkk的路径数量。（把模板的等于改成了小于等于，并且需要统计路径数量）
分析
由于题目变成了小于等于，那么我们就不能再用原来那套开桶的办法了。于是我们考虑把当前根的所有子树中的节点拉出来统计方...]]></description><category></category></item><item><title><![CDATA[【模板】圆的面积并（自适应辛普森乱搞）]]></title><link>https://blog.csdn.net/qq_30115697/article/details/90930007</link><guid>https://blog.csdn.net/qq_30115697/article/details/90930007</guid><author>qq_30115697</author><pubDate>Wed, 05 Jun 2019 20:00:59 +0800</pubDate><description><![CDATA[题意
先上一道模板题：SP8073 The area of the union of circles
通过点和半径的方式给出平面上的一些圆，求这些圆覆盖的总面积。
题解
和这道题类似的还有P1222 三角形 。不过这道题由于一些特殊的性质，直接扫描线就可以过，并且效率远远高于自适应辛普森。
还是来看这道题。我们可以把平面上的一堆相交的圆看成一个整体函数，我们要求的就是每一段函数的面积和。很明显可以...]]></description><category></category></item><item><title><![CDATA[【题解】CF1025F Disjoint Triangles]]></title><link>https://blog.csdn.net/qq_30115697/article/details/90749694</link><guid>https://blog.csdn.net/qq_30115697/article/details/90749694</guid><author>qq_30115697</author><pubDate>Mon, 03 Jun 2019 11:43:47 +0800</pubDate><description><![CDATA[题意
传送门。
给出平面上的一些点，从其中选出6个点，组成两个三角形，求使两个三角形不相交（即平面上不存在一个点同时属于两个三角形）的方案数，如果选的点相同但组成的三角形不同则算不同的方案。
分析
首先有一个结论：如果两个三角形不相交，那么一定存在两条内公切线。如下图（感性理解一下）：

那么我们就可以枚举内公切线了。
对于输入的每一个点，我们让它和其他n−1n-1n−1个点组成直线，并进行极角排...]]></description><category></category></item><item><title><![CDATA[【模板】最小矩形覆盖]]></title><link>https://blog.csdn.net/qq_30115697/article/details/90717223</link><guid>https://blog.csdn.net/qq_30115697/article/details/90717223</guid><author>qq_30115697</author><pubDate>Fri, 31 May 2019 15:33:33 +0800</pubDate><description><![CDATA[前置芝士：凸包，旋转卡壳，向量的基本运算
题意
给出平面上的一堆点，找出一个能够覆盖所有点的面积最小的矩形，输出面积及四个顶点的坐标。
分析
一眼计算几何好毒瘤题。（废话）
经过一番涂涂画画之后，我们可以非常感性地得出一个结论：最后这个矩形一定有一边和这些点的凸包上的一条边重合。
也就是说，最后的矩形应该是长成下面这样子的。

那么我们很显然需要先求出凸包，然后枚举凸包上的一条边来和矩形底边重叠。...]]></description><category></category></item><item><title><![CDATA[【题解】P4049 [JSOI2007]合金]]></title><link>https://blog.csdn.net/qq_30115697/article/details/90487526</link><guid>https://blog.csdn.net/qq_30115697/article/details/90487526</guid><author>qq_30115697</author><pubDate>Thu, 23 May 2019 20:37:20 +0800</pubDate><description><![CDATA[模型转换+计算几何基础好题。
题意
直接上传送门
模型转换
首先我们发现，由于三个属性的和恒为1​1​1​，那么实际上第三个属性并没有什么用。于是我们可以只用两个属性描述一个物品，那么就可以把物品放在二维平面上，当做一堆点来处理。
接下来有一个神奇的结论~~（我还是不知道如何证明）~~:
对于两个点（也可以当做向量），在本题中能由这两个物品构成的点一定在以这两个点为端点的线段上。
推广（感性理解）...]]></description><category></category></item><item><title><![CDATA[【题解】CF1147C Thanos Nim]]></title><link>https://blog.csdn.net/qq_30115697/article/details/90407279</link><guid>https://blog.csdn.net/qq_30115697/article/details/90407279</guid><author>qq_30115697</author><pubDate>Tue, 21 May 2019 15:07:58 +0800</pubDate><description><![CDATA[题意
传送门
有nnn堆石子(nnn为偶数)，每次玩家要选择恰好n2\frac{n}{2}2n​堆石子，并从每一堆中任意拿走数量大于000的石子（每堆拿的数量可以不同）。问先手是否必胜。
分析
先上结论：当石子数最小的堆数量不超过n2​\frac{n}{2}​2n​​时，先手必胜，否则先手必败。
接下来是感性理解时间。
我们考虑最小堆数量超过n2\frac{n}{2}2n​的情况。那么此时先手不管...]]></description><category></category></item><item><title><![CDATA[【题解】SP23881 God of Nim]]></title><link>https://blog.csdn.net/qq_30115697/article/details/90406428</link><guid>https://blog.csdn.net/qq_30115697/article/details/90406428</guid><author>qq_30115697</author><pubDate>Tue, 21 May 2019 14:28:16 +0800</pubDate><description><![CDATA[题意
传送门
有nnn堆石子，第iii堆石子每次可以取的数量在[1,ki][1,k_i][1,ki​]间，问先手是否必胜。
分析
这显然是一个NimNimNim游戏的变种。
我们首先通过SGSGSG函数分析。一般这种由多个小状态（每堆石子）组成的局面，都可以先单独分析出每个小状态的SGSGSG函数值，然后异或起来，最后得到整体局面的SGSGSG函数值。（抄一波博弈论课件）
那么如果我们把每一堆石子...]]></description><category></category></item><item><title><![CDATA[【算法】搜索进阶]]></title><link>https://blog.csdn.net/qq_30115697/article/details/90230444</link><guid>https://blog.csdn.net/qq_30115697/article/details/90230444</guid><author>qq_30115697</author><pubDate>Wed, 15 May 2019 10:10:27 +0800</pubDate><description><![CDATA[搜索是考场骗分利器，只要你能写出一手复杂度优秀的搜索，那至少应该不会爆0。
​															——某位巨佬

一些玄学的东西（剪枝、小技巧、随机化等）
神奇的剪枝
P1585 魔法阵。
我们发现题目中的模数比较特别，是n∗m2​\frac{n*m}{2}​2n∗m​​，这暗示我们可以把搜索的过程分成两部分(别想歪了，这题跟Meet-In-Middle一点关系都没有)。
首先我们对于...]]></description><category></category></item></channel></rss>