自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Fighter的博客

OI蒟蒻的刷题历程

  • 博客(64)
  • 收藏
  • 关注

原创 【题解】 P6834 【[Cnoi2020]梦原】

分析首先我们可以发现,题目中所说的“最优策略”,实际上就是每次不停地选尽量大的连通块,直到连通块中有一个节点上地果子被取完。此时这个节点相当于从树上被删去了,并且将它所在的连通块分割成了若干个小连通块。所以一个连通块能完整存在的时间,取决于连通块中aia_iai​的最小值。于是我们先来考虑一种最简单的情况:如果一开始一条边都没有,我们所需的操作次数即为∑i=1nai\sum\limits_{i=1}^na_ii=1∑n​ai​。然后我们考虑加上一条边,假设此时这条边连接了iii和jjj,那么根据上面的

2020-11-04 11:02:48 420

原创 【题解】 CF1359D 【Yet Another Yet Another Task】

扫描线大佬真的强……我来说说我的奇怪做法。根据题意,只要先手选定一个区间之后,拿掉的一定是最大值,那么我们可以考虑枚举这个被拿掉的最大值。于是考虑每个数作为最大值能影响的范围,显然可以用单调栈求出左右第一个比它大的。记iii在[l,r][l,r][l,r]内是最大值,那么我们就是要从这个位置开始,分别向左向右找到一段和最大的子段。先考虑右边,左边同理。我们对原序列进行前缀和,那么也就是要找到[i,r][i,r][i,r]中前缀和的最大值。所以我们用st表预处理,查询区间最大值即可。代码中为了方便

2020-11-04 11:00:58 403

原创 【题解】 CF1359E 【Modular Stability】

我们先拉出序列中最小的那个数aaa,假设现在有一个大于aaa的模数bbb,那么思考一下它们的顺序对答案的影响。对于任意正整数xxx,我们要满足x%a%b=x%b%ax\%a\%b= x\%b\%ax%a%b=x%b%a,又因为b>ab>ab>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\

2020-11-04 10:59:36 358 1

原创 【题解】 UVA1707 【Surveillance】

看到是环,于是我们非常套路地把它拉成链。接着就要枚举一个起点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点的线段的最大右端点,可以用差分的

2020-11-04 10:54:08 292

原创 【题解&杜教筛总结】51Nod1238 最小公倍数和V3

前置知识:杜教筛。(不会点这里)。大片公式预警!!!题意求∑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:

2020-06-03 14:58:32 2854

原创 【题解】CF808G Anthem of Berland

题意传送门 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个位...

2020-03-14 20:19:19 7675

原创 【题解】洛谷P6006 [USACO20JAN]Farmer John Solves 3SUM G

题意传送门题解发现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...

2020-03-14 20:18:48 7540

原创 【题解】洛谷P5588 小猪佩奇爬树

题意传送门题解这里是一种时空复杂度均为O(nlog⁡n)O(n\log n)O(nlogn)的暴力做法。感觉这道题顺着思路想下去还是挺简单的。题目的要求实际上是对于同种颜色的点,都必须在同一条链上。那么我们自然想到把每一种颜色单独处理,先找到每种颜色中深度最大的那个点,显然如果这种颜色能符合一条链的条件,那么这个最深的点一定是链的一端,我们设它为xxx。接着我们考虑另一端的位置。这里出...

2019-10-14 15:44:27 13180

原创 P3647 [APIO2014]连珠线

题意传送门题解我们发现,如果一棵树的形态固定了,那么蓝线的方向一定是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作为蓝线的中点能够得到的最大价值。我们分别对于两种情况...

2019-10-05 21:19:50 12764

原创 【题解】CF316E3 Summer Homework

题意原题传送门给定一个长度为nnn的序列A(n≤200000)A (n \leq 200000)A(n≤200000),要求支持单点修改和区间加,并在线询问函数S(l,r)mod  109S(l,r)\mod 10^9S(l,r)mod109的值,其中函数S(l,r)S(l,r)S(l,r)的定义如下:S(l,r)=∑i=0r−lAi+...

2019-07-18 07:51:41 10294

原创 【数据结构】线段树的扩展与应用

线段树是一种非常基础的数据结构,但有的时候仅仅是普通的线段树无法满足需求,那么我们就要对其进行一些扩展。Chapter1:标记永久化实现普通的线段树通过懒标记(Lazy Tag)以O(nlogn)O(nlogn)O(nlogn)的复杂度实现对序列的区间修改和查询。但有些时候想要向下push_downpush\_downpush_down标记和向上push_uppush\_uppush_up维...

2019-07-16 08:07:00 5859

原创 【题解】CF1181D Irrigation

题意传送门给定MMM个城市,每年会选出一个城市举办比赛,现给出前NNN年城市举办比赛的情况。在接下来的年份中,每年的比赛会在举办比赛次数最小的城市举办,如果有很多城市举办次数均为最小值,则在编号最小的城市举办比赛。现给出 QQQ个询问,每次询问第 KKK 年在哪个城市举办比赛。分析由于个人习惯,把题目中的nnn和mmm意义互换。我们可以把问题抽象成有nnn个宽度相等高度不同的矩形,给出初...

2019-06-19 09:41:54 6106

原创 【题解】P4178 Tree

前置芝士P3806 【模板】点分治1 。不过数据真是水的可以,第一次我数组开小,过了;第二次我分治的时候没找中心,还是过了……所以也可以做P4149 Race 。题意和点分治模板很像:求树上距离小于等于kkk的路径数量。(把模板的等于改成了小于等于,并且需要统计路径数量)分析由于题目变成了小于等于,那么我们就不能再用原来那套开桶的办法了。于是我们考虑把当前根的所有子树中的节点拉出来统计方...

2019-06-12 10:04:08 385

原创 【模板】圆的面积并(自适应辛普森乱搞)

题意先上一道模板题:SP8073 The area of the union of circles通过点和半径的方式给出平面上的一些圆,求这些圆覆盖的总面积。题解和这道题类似的还有P1222 三角形 。不过这道题由于一些特殊的性质,直接扫描线就可以过,并且效率远远高于自适应辛普森。还是来看这道题。我们可以把平面上的一堆相交的圆看成一个整体函数,我们要求的就是每一段函数的面积和。很明显可以...

2019-06-05 20:00:59 549

原创 【题解】CF1025F Disjoint Triangles

题意传送门。给出平面上的一些点,从其中选出6个点,组成两个三角形,求使两个三角形不相交(即平面上不存在一个点同时属于两个三角形)的方案数,如果选的点相同但组成的三角形不同则算不同的方案。分析首先有一个结论:如果两个三角形不相交,那么一定存在两条内公切线。如下图(感性理解一下):那么我们就可以枚举内公切线了。对于输入的每一个点,我们让它和其他n−1n-1n−1个点组成直线,并进行极角排...

2019-06-03 11:43:47 529

原创 【模板】最小矩形覆盖

前置芝士:凸包,旋转卡壳,向量的基本运算题意给出平面上的一堆点,找出一个能够覆盖所有点的面积最小的矩形,输出面积及四个顶点的坐标。分析一眼计算几何好毒瘤题。(废话)经过一番涂涂画画之后,我们可以非常感性地得出一个结论:最后这个矩形一定有一边和这些点的凸包上的一条边重合。也就是说,最后的矩形应该是长成下面这样子的。那么我们很显然需要先求出凸包,然后枚举凸包上的一条边来和矩形底边重叠。...

2019-05-31 15:33:33 2705

原创 【题解】P4049 [JSOI2007]合金

模型转换+计算几何基础好题。题意直接上传送门模型转换首先我们发现,由于三个属性的和恒为1​1​1​,那么实际上第三个属性并没有什么用。于是我们可以只用两个属性描述一个物品,那么就可以把物品放在二维平面上,当做一堆点来处理。接下来有一个神奇的结论~~(我还是不知道如何证明)~~:对于两个点(也可以当做向量),在本题中能由这两个物品构成的点一定在以这两个点为端点的线段上。推广(感性理解)...

2019-05-23 20:37:20 458

原创 【题解】CF1147C Thanos Nim

题意传送门有nnn堆石子(nnn为偶数),每次玩家要选择恰好n2\frac{n}{2}2n​堆石子,并从每一堆中任意拿走数量大于000的石子(每堆拿的数量可以不同)。问先手是否必胜。分析先上结论:当石子数最小的堆数量不超过n2​\frac{n}{2}​2n​​时,先手必胜,否则先手必败。接下来是感性理解时间。我们考虑最小堆数量超过n2\frac{n}{2}2n​的情况。那么此时先手不管...

2019-05-21 15:07:58 639

原创 【题解】SP23881 God of Nim

题意传送门有nnn堆石子,第iii堆石子每次可以取的数量在[1,ki][1,k_i][1,ki​]间,问先手是否必胜。分析这显然是一个NimNimNim游戏的变种。我们首先通过SGSGSG函数分析。一般这种由多个小状态(每堆石子)组成的局面,都可以先单独分析出每个小状态的SGSGSG函数值,然后异或起来,最后得到整体局面的SGSGSG函数值。(抄一波博弈论课件)那么如果我们把每一堆石子...

2019-05-21 14:28:16 331

原创 【算法】搜索进阶

搜索是考场骗分利器,只要你能写出一手复杂度优秀的搜索,那至少应该不会爆0。​ ——某位巨佬一些玄学的东西(剪枝、小技巧、随机化等)神奇的剪枝P1585 魔法阵。我们发现题目中的模数比较特别,是n∗m2​\frac{n*m}{2}​2n∗m​​,这暗示我们可以把搜索的过程分成两部分(别想歪了,这题跟Meet-In-Middle一点关系都没有)。首先我们对于...

2019-05-15 10:10:27 734 1

原创 【题解】CF109B Lucky Probability

写这篇题解纯粹是为了水水社区贡献题意直接上传送门分析我们发现虽然题目中给的区间范围很大,但是实际上所包含的“幸运数”并不多,于是我们可以考虑枚举相邻的kkk个幸运数,并累计恰好包含这kkk个数的区间总数。最后用符合条件的区间数除以总区间数,就是要求的概率。思路就是那么简单,但细节却比较复杂。首先假设我们枚举的kkk个数的左右端点编号为i,ji,ji,j,用num[i]num[i]num[...

2019-05-14 16:09:10 406

原创 【数据结构】块状链表(分块大法好)

问题引入众所周知,数组索引方便,但插入和删除困难(复杂度极高);而链表恰恰相反,索引困难,而插入和删除简单。那么当我们遇到既要动态插入删除,又要快速索引元素的问题时,有没有一种数据结构能够同时快速支持这两个操作呢?以我们老祖宗的强大的智慧,答案当然是有,它就是——序列之王Splay!!!不好意思,走错片场了……重来一次。它就是——块状链表!!!整体思想看到它的名字,估计你都能猜出来...

2019-05-09 19:57:46 7611 2

原创 【题解】CF535D Tavas and Malekas

阅读理解题题意解释给定文本串的长度nnn和一个模式串sss,并且已知模式串在文本串中某些出现位置(不一定仅在这些位置出现),求可能的文本串的数量。分析首先输入有可能出现方案为0的情况(即不合法),于是我们先考虑不合法的判断。显而易见的是当sss出现的结尾位置大于nnn时,直接可以判定为不合法。然后就是当两个模式串出现位置有重叠时,假如重叠部分匹配不上,那么显然无解。(具体判定方式下文会...

2019-05-03 15:29:04 448

原创 【题解】方格取数&&骑士共存问题(二分图最大独立集)

方格取数问题传送门骑士共存问题传送门分析之所以把这两题放在一起,是因为它们有很多的共同点。单看题目背景就知道其实它们挺类似的:都是在棋盘(网格)中,且点与点之间有相互的排斥关系。实际上它们的解法思想也几乎一模一样。方格取数先讲方格取数。首先我们发现这类问题的最重要的特点:点与点之间会互相排斥,且每个点只有选与不选两种状态。于是我们可以考虑构建二分图,并建立超级源点s​s​s​和汇点t...

2019-04-26 20:09:39 463

原创 【题解】CF875C National Property

题意给定一些字符串,其中字母用数字表示,并且初始是小写的。你可以把一些小写字母改成大写,但同时你要把所有同种字母全部改成大写。问是否能经过一些操作使得最终的字符串序列满足按字典序升序排列。如果能,则需要输出方案。题解可以发现每种字母只有两种状态:大写或者小写。并且状态受到相邻字符串的大小约束,于是我们可以朝2-SAT的方向思考~~(其实要不是这是我们2-SAT作业题,还真想不到)~~。我们...

2019-04-22 15:57:46 644

原创 【题解】P1979 华容道

AK 提高试炼场祭原题传送门题解这是一道神仙题首先发现爆搜有70分!!!要是在考场上那肯定直接暴力啊!然而还是得写正解。首先,爆搜慢是因为有很多无用状态(比如空格在乱跑但指定棋子并没有移动)。所以我们要剪掉这些状态。我们考虑只搜有用的状态。也就是说我们强制让空格处于棋子的四周,这个时候就会出现两种移动的情况:空格绕棋子四周走。空格与棋子互换位置。对于第一种情况,我们发现可以...

2019-04-19 07:39:25 459 1

原创 【题解】P2519 [HAOI2011]problem a

原题传送门Solution这题难在题意的转化。(同时说一句:STL大法好啊!!)题目里给定了对于第iii个人,有aia_iai​个人分数比他高,bib_ibi​个人分数比他低,那么我们可以知道他的排名为ai+1a_i+1ai​+1,并且有n−ai−bin-a_i-b_in−ai​−bi​个人(包括自己)与他分数相等。那么我们就可以知道这段分数相等的区间为[ai+1,n−bi][a_i+1, ...

2019-04-18 10:07:14 373

原创 【题解】CF1029D Concatenated Multiples

原题传送门Solution我们发现,题目中要求的"把a接到b前面"实际上等于a∗10log10b+ba*10^{log_{10}b}+ba∗10log10​b+b。于是我们自然想到预处理出ai∗10xmod  ka_i*10^x \mod kai​∗10xmodk,显然xxx不会超过10。然后对于每个aia_iai​,查询有多少数接到自己...

2019-04-15 21:06:20 421

原创 【算法&题解】莫比乌斯反演及一些经典套路

【算法&题解】莫比乌斯反演及一些经典套路首先声明,由于我太菜了,本文很多式子可能并不会有详细的证明。若要了解莫比乌斯反演最基本的证明,可以去这里,本文主要讲解一些套路。莫比乌斯函数我们定义莫比乌斯函数如下:设n=∏i=1mpiai,k=∏i=1maiμ(n)={1(n=1)(−1)m(k=1)0(k>1)设n=\prod_{i=1}^{m} p_i^{a_i},k=...

2019-04-11 20:21:49 1310

原创 【题解】震惊!!!GCD SUM套路竟狂水七倍经验!!!

标题党又来了题目描述给定nnn,求∑i=1n∑j=i+1ngcd(i,j)\sum\limits_{i=1}^{n} \sum\limits_{j=i+1}^{n}gcd(i,j)i=1∑n​j=i+1∑n​gcd(i,j)。解法1:暴力两个for搞定。每一次计算复杂度为O(n2)​O(n^2)​O(n2)​。于是你可以水掉UVA11417。解法2:化柿子既然直接枚举i,j​i,j...

2019-04-09 11:46:33 572

原创 【题解】P3119 [USACO15JAN] Grass Cownoisseur

题意传送门题意很简单,给定一张有向图,允许选择在一条边上反向行走一次,求从1出发,且最终回到1,最多能遍历到的点数。Solution一道综合性的图论好题。首先想到,对于一个强连通分量内的点,都可以互相到达,直接缩成一个点,使原图变为DAG,并给每个强连通分量赋一个权值,为这个强联通分量内的点数。然后对于一张DAG,考虑实现反向行走一次的条件。这时我们又发现,反向行走一次后,并不改变图的...

2019-04-03 18:34:35 398

原创 【题解】SP5973 Selecting Teams(3.30模拟赛T1)

题意有n​n​n​个不同的物品,在其中选出不多于k​k​k​个,再从选出的m​m​m​个中选择l​l​l​个,并从l​l​l​个中选出1个,给定n​n​n​和k​k​k​,求总情况数对225​2^{25}​225​取模(具体模数不同,但都是2的整数次幂)。思路各位巨佬一上来就是一串简洁易懂的理解,像我这种蒟蒻只能老老实实手推式子。首先按照题意写出式子:ans=∑m=1k(Cnm×(∑i=...

2019-04-01 16:08:21 343

原创 【算法】扩展卢卡斯详解

前置芝士扩展卢卡斯相对较为复杂,需要较多的前置芝士。快速幂质因数分解组合数公式扩展欧几里得(exgcd)求逆元中国剩余定理(或excrt)熟练阅读Latex至于卢卡斯定理,那真的不重要。问题形式卢卡斯(LucasLucasLucas)和扩展卢卡斯(exLucasexLucasexLucas)都用于求解形如Cnmmod &ThinSpace...

2019-04-01 10:01:07 2039 1

原创 【算法】震惊!!!史上最详细的卡特兰数浅谈!!!

我是标题党卡特兰数简介卡特兰数是组合数学中的一种著名数列,通常用如下通项式表示(为了不与组合数CCC冲突,本文用fff表示卡特兰数):f(n)=C2nnn+1f(n)=\frac{C_{2n}^{n}}{n+1}f(n)=n+1C2nn​​当然,卡特兰数也是有递推式的:f(n)=∑i=0n−1f(i)×f(n−i−1)f(n)=\sum_{i=0}^{n-1}f(i)\times ...

2019-03-30 07:53:11 56225 33

原创 【题解】SP19149 Virus Revisited

题意原题传送门Solution由于最后求的是原点的细胞数,那么一定是先从原点向外扩展,再扩展回来到达原点。那么我们就可以把答案转化为从原点出发,经过T​T​T​时间回到原点的方案数。于是我们考虑dpdpdp,设f[i][j]f[i][j]f[i][j]表示用iii个维度,经过2j2j2j的时间回到原点的方案数(显然奇数时间答案为0)。那么我们考虑对于一个新的维度i+1i+1i+1和新的时间...

2019-03-28 11:21:24 346

原创 【挖坑】【GSS】GSS7:树链剖分中的最大子段和

Can you answer these queries?GSS系列是spoj出品的一套数据结构好毒瘤题,主要以线段树、平衡树和树链剖分为背景,进行了一些操作的魔改,使得难度远超模板题,但对于思维有极大的提升。所以我会选择一些在我能力范围内的题挖坑选讲,构成一个GSS系列。至于剩下那些,等我成为巨佬弄懂了再说吧。GSS7:树链剖分中的最大子段和原题传送门(洛谷)本题前置芝士:GS...

2019-03-26 18:45:38 647

原创 【题解】试题库问题

题意:原题传送门思路按照最大流的日常套路,我们来考虑如何建图。显然我们把题的类型和每套试题分别作为图中的点。用编号为1~n的点表示n套试题,编号为n+1~n+k的点表示k种类型。由于每套试题贡献为1,那么我们就从试题向它所属的所有类型连权值为1的边,从源点向试题连权值为1的边。然后,因为每种试题需要给定的viv_ivi​个,那么我们就从每种类型向汇点连权值为vi​v_i​vi​​的边,然...

2019-03-25 14:43:14 552

原创 【题解】魔术球问题

题意原题传送门。思路一看标签:网络流24题。我们考虑建图,把每个点拆开,若两个数和为平方数,那么就从编号小的向编号大的连权值为1的有向边。那么就把这个问题转换成了匹配问题。然后我们考虑对于一个新的球,如果能找到原来在的一个球能够匹配,那么可以直接匹配,否则就需要新开一根柱子。所以我们从小到大枚举放的球数,每次加入一个球,直到柱子个数超过给定的上限,那么上一次就是能放的最多球数。对于方案...

2019-03-24 20:32:35 899 1

原创 【题解】最小路径覆盖方案(最大流求二分图最大匹配)

题意原题传送门思路在解决这道题之前,我们先讲一下用最大流求解二分图最大匹配的做法。如果巨佬您已经熟练掌握了,那完全可以跳过。不过你都这么巨了,怎么会来看我的blog呢我们一般是把每个点拆成两个,分为出点和入点,顾名思义出点连的边都是从他出发,连向其他点;入点连的边都是从其它点出发,连到当前点。然后我们再建立一个超级源点和一个超级汇点,从源点向所有点的出点连边,从所有入点向汇点连边,然后在图...

2019-03-22 19:36:38 948

原创 【挖坑】【GSS系列】GSS5:限制端点范围的区间最大子段和

Can you answer these queries?​ GSS系列是spoj出品的一套数据结构好毒瘤题,主要以线段树、平衡树和树链剖分为背景,进行了一些操作的魔改,使得难度远超模板题,但对于思维有极大的提升。​ 所以我会选择一些在我能力范围内的题挖坑选讲,构成一个GSS系列。至于剩下那些,等我成为巨佬弄懂了再说吧。GSS5:限制端点范围的区间最大子段和原题传送门(洛谷)前置芝士...

2019-03-21 11:42:06 829

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除