01 2020 档案
摘要:"题目" 好像经典的做法是关键点+调和级数,但是不太会;于是就打个SAM+暴力启发式合并 我们只需要算一下每个$i$是多少个AA串的结尾,是多少个BB串的开头,我们发现这两个问题其实是等价的;我们算每个$i$是多少个AA串的结尾即可; 其实我们只需要对于每个$i$算有多少$j define re r
阅读全文
摘要:"题目" 显然SAM版题,写它的原因就是我太颓了;之后学习了一下正规的广义SAM写法,争取以后不再写 代码
阅读全文
摘要:"题目" 快乐容斥。 发现直接做不是很好做,我们考虑把一些 强行钦定成 ']( 1)\sum_{j=0}^{i 1}[s_j=' ']g_j\frac{1}{(i j)!}$$ 我们可以硬点$s_0,s_n$为 这样便于计算,用分治ntt算出$g_n$之后乘上$( 1)^{\text{' defin
阅读全文
摘要:"题目" 这个$|a_ix+b_i|$看起来不是很优美,我们考虑把它变得优美一些; 提一个$a_i$出来就是$|a_i||x+\frac{b_i}{a_i}|$,我们把$\frac{b_i}{a_i}$看成$ ( \frac{b_i}{a_i})$,于是原来的柿子就是$|a_i||x ( \frac
阅读全文
摘要:"题目" 好难啊,不会啊;啊,$k\leq 20$,那就直接容斥吧; 我们硬点一些控制点,之后使我们必须经过这些被硬点的点;由于我们只能往右上走,所以经过这些被钦定的点的顺序是一定的,我们只需要考虑相邻两点之间的路径数最后乘起来就好; 于是我们需要推一个$f(n,m)$表示从$(0,0)$走到$(n
阅读全文
摘要:"题目" 水题,就当复习马拉车了; 设$vis_i$表示前缀$i$能否变换成功; 如果前缀$i$进行一次对称变换,长度为$i+i 1$;当$i+i 1 n$的时候,我们只需要判断回文半径是否不小于$n i$即可; 当$i=i 1\leq n$时,如果进行变换后得到的是前缀$i+i 1$,那么$vis
阅读全文
摘要:"题目" 我是垃圾; 最开始觉得可以三次问出第一位,之后还有$n 1$位和$n 1$次询问,只需要一次确定一位就好了;之后就发现我是垃圾,上来直接 ,如果不是$0$那么首位就是$A$或$B$,否则就是$X$或$Y$,之后再问一次就好了; 之后我们需要用$n$次确定$n 1$位,于是就开始大跃进了;想
阅读全文
摘要:"题目" 终于会写交互了 粗略观察一下,发现这道题树的部分查询次数要求是$O(n\log n)$级别,链部分要求是$O(n)$级别而且要求这个常数比较小 先来考虑链怎么搞,我们可以随机一个序列,之后按照顺序 这些点,如果一个点已经被探明了,我们就跳过它;我们维护当前已经扩展出来的这条链的左右端点,每
阅读全文
摘要:"题目" 太仙了,完全不会做; 但是为什么能过题呢,因为可以快乐的瞪眼找规律。 读一下题目后面的证明就知道,交换次数达到这个$\frac{1}{2}\sum_{i=1}^n|i p_i|$的下界需要使得每一次交换的两个数$p_j,p_{j+1}$里自己的位置更近一下;所以如果存在某一个数,在冒泡的过
阅读全文
摘要:"题目" 中位数显然是可以二分的,我们二分一个$mid$,所有边权不小于$mid$设成$1$,否则设为$ 1$;如果能找到一条边权和不小于$0$的路径,就说明中位数可以更大;于是这显然可以长链剖分+线段树 第一次写长剖线段树,就当写个板子了 代码
阅读全文
摘要:"题目" 回滚莫队,大概是一种莫队的小trick 对序列分块,对于左右端点在同一个块里的直接暴力;其余的询问按照左端点所在块分类,一个块内按照右端点升序排序 我们维护一个指针$rp$记录当前右端点的位置,对于一个询问$[l,r]$,设其所在块的右端点为$R$,我们将$rp$暴力移动到$r$的位置;由
阅读全文
摘要:"题目" 根据题意,只有刚开始所在的点可能不是给定的$n$个点,之后所有的位置一定都在给定的点集中了;我们大力求一下$P_{i,j}$表示从点$i$移动到点$j$的概率,这个随便暴力一下就好了,由于询问的终点是给定的,于是我们利用求出来的$P_{i,j}$建一张反图 接下来不妨考虑一下起始点的位置,
阅读全文
摘要:"题目" 对于一个圆滑处理过的矩形,我们发现其周长就是四个$\frac{1}{4}$圆的圆心形成的矩形周长再加上一个圆的周长 于是我们大力猜想,答案就是把所有$\frac{1}{4}$圆的圆心拿下来建个凸包,凸包的周长再加上一个圆的周长即可;发现这样非常正确,感性理解一下大概是这个凸多边形转过了一个
阅读全文
摘要:"题目" 不难发现题意就是,每条边有两种权值,每次询问两个点$u,v$,问$u$到$v$是否存在一条路径满足第一类边权的最大值为$a$,第二类边权的最大值为$b$ 一个直观的暴力做法就是把$a_i\leq a,b_i\leq b$的边都加进来,看看加入这些边后$u,v$是否联通;如果联通,在看看$u
阅读全文
摘要:"题目" wdnmd这精度卡死我了 不难发现答案是存在单调性的,于是我们二分就好了;现在要做的就是给定一些竖直线段,问是否存在一条标准抛物线经过所有线段 对于一条线段$(x_i,l_i,r_i)$,如果$f(x)=ax^2+bx$经过它的话需要满足$l_i\leq ax_i^2+bx_i\leq r
阅读全文
摘要:"题目" 先推一波式子,设$p(x,y)$,那么我们尝试写出点$(x_i,y_i),(x_{i+1},y_{i+1})$和$p(x,y)$形成的三角形面积,就是用叉积写一波 $$2S=(x_i x)(y_{i+1} y) (x_{i+1} x)(y_i y)$$ 大力拆开式子,发现$2S=(y_{i
阅读全文
摘要:"题目" wdnmd可算调出来了,以后我也是会半平面交的人了 由于给定的是一些凸包,我们直接按照逆时针把所有直线搞下来,我们默认保留直线左边的半平面;之后我们就可以按照 极角序 把直线排序,对于两条极角相等的直线,显然是更靠近左边的优,于是我们 只保留最靠左的直线 与凸包不同的是,我们使用一个双端队
阅读全文
摘要:"题目" 啊,不难发现我们要做的就是对于每一个$i$找到一个$j$使得$a_j+\sqrt{|i j|}$最大 不失一般性的只讨论$ji$的情况我们完全可以将序列翻转再来一遍 不难发现存在决策单调性,因为$f(x)=\sqrt{x}$的导数是$f'(x)=\frac{1}{\sqrt{2x}}$,这
阅读全文
摘要:"题目" 注意到$c_i\leq 300$我们显然可以利用$c_i$来搞事情 一个自然的想法是我们根据$c_i$进行分组,每一个组内物品体积都是一样的,所以按照价值从大到小排序,变成了多个物品,于是我们把问题转化成了一个分组背包问题 于是我们有这样的一个$dp$,$dp_{i,j}=\max dp_
阅读全文
摘要:"题目" 为了证明我学过李超树,我还是来写这篇博客吧 李超树支持区间插入一条直线,询问区间或单点的最大值,主要运用了标记永久化的思想 对于线段树上每一个节点维护一个标记,记录在这个区间中点$mid$上值最大的直线 对于插入操作,如果我们插入的直线在$mid$上值更大,我们就把要插入的直线和标记直线s
阅读全文
摘要:2019 年,第一届 CSP 认证的考场上,作为选手的asuldb打开了第二题。经过一番观察,他认为这道题存在决策单调性,于是开始乱写最终发现过不了样例。 最终asuldb对该题设计出了一个暴力程序,对于一组规模为$u$的数据,该程序的运行时间极有可能是$u^2$,之后又由于asuldb写错了输出,
阅读全文
摘要:"题目" 题意:定义一个数字的LIS为将其看成一个字符串的LIS,问$[l,r]$内有多少数字的LIS长度为$k$ 考虑树状数组求一个序列LIS的过程,我们定义了一个东西$f_i$表示结尾元素不超过$i$的LIS的最大长度,维护这个数组就能实现较为快速的转移 显然这个数组是单调不降的,且不难发现$f
阅读全文