04 2021 档案
摘要:题面传送门 为什么所有题解要用帮助转移啊,我觉得不用吧…… 随便画画图就可以发现这个一定是从起点向左走一段然后再向右不回头走再向左走一段。 然后前后两端都可以用字符串哈希搞掉。 然后中间dp即可。 具体转移因为不会回来走所以枚举前一行转移即可。 时间复杂度 code: #incl
阅读全文
摘要:题面传送门 显然有一个的dp状态就是设为分了次,到了的最小无序度,用树状数组维护一下即可。 然后把这个东西转到二维平面上看就显然有决策单调性。 但是这个转移不能直接计算所以没有办法直接决策单调性。 因为当前层不用这一层而直接用下一层,所以可以用分
阅读全文
摘要:题面传送门 看到数颜色就可以想到要用分块。 然后把正解想出来然后复杂度算错 然后发现我们有两种方法: 第一种,将每个颜色都建成并查集然后直接查询,这个是的。 第二种,将每种颜色内的暴力匹配扔到map里,然后对于每个询问查询。这个是的。 然后想到将两个
阅读全文
摘要:题面传送门 这个轮换的东西线段树显然不好搞。 万能的分块其实是更好的选择。 这种统计个数的肯定是每个块开桶记录有几个。 那修改操作就是把每个块尾巴那个元素拿出来接到后一个块开头。然后把最后一个元素删掉放到第一个元素的位置。 不难发现这个用deque就可以很好地解决。修改是顺便维护一下桶即可。 这个问
阅读全文
摘要:题面传送门 一看到效率就感觉像是分数规划。 然后这个东西又可以二分。 所以应该是二分寻找答案。 那么怎么看是否可以呢? 看到很小想到可以 首先floyd预处理出两点之间距离。 然后再暴力枚举得到两点之间最优的值。 那么二分一个答案之后把每条边边权设为$w
阅读全文
摘要:题面传送门 不是很理解陈指导为什么没切掉这道题。 把这个东西分成两端处理,即,因为收集器中宝石种类不一样所以这个被算重了是没有关系的。 前面一个我们可以预处理出对于每一个节点它最近的后一个在什么地方,然后对于每个点找到最近的第一个然后在树上倍增即可
阅读全文
摘要:题面传送门 看到数据范围想到可以状压。 然后以为是的分配方式看着题目想了好久始终没有想到怎么把的枚举转移去掉。 设表示当前到了第个队伍,集合为,总量为 发现这样子其实还是要枚举转移。 考虑怎么有最优分配方案,显然每个都给最少是最优的。设
阅读全文
摘要:题面传送门 居然省选出这么简单的题目。 首先显然这个东西有单调性所以可以二分。 然后考虑这个东西怎么验证。 首先因为升序所以可以直接在上面找范围。 考虑确定左端点则右端点很好确定。 我们无非要确定两件事情:翻的数量有没有超过,翻完之后有没有出现不在范围内的情况。 前面那
阅读全文
摘要:题面传送门 设为到了个人,走了条船的最小沮丧度之和。 然后就可以发现这个是的过不去。 其实把图画出来就可以发现满足四边形不等式,旁边要多两块矩形。 所以可以直接上决策单调性优化了。 时间复杂度有点卡常。 code: #includ
阅读全文
摘要:题面传送门 先把最小生成树跑出来。 对于一条非树边显然就是最小生成树上面倍增一下就可以找到答案。 但是对于最小生成树树边很难做。要枚举所有非树边。 换个思路,找到所有非树边然后在最小生成树上zyq倍增即可。 时间复杂度,树剖两个log可能过不去。 code: #inclu
阅读全文
摘要:题面传送门 首先如果那么一直用最大的食材搞就可以了,显然最大的食材一定大于 然后怎么搞 把排序,然后显然可以用最小的和最大的来凑出,显然成立。 这样子每次减一,减一直到,就可以随便构造了。 但是数据范围还有个$m=n-
阅读全文
摘要:2020年2月27日: luogu P3870 [TJOI2009]开关 线段树模板 CodeForces 1313C1 结论+模拟 CodeForces 1313A 结论 luogu P2306 被yyh虐的mzc 思维+单调队列/二进制优化多重背包 2020年2月28日: luogu P3197
阅读全文
摘要:题面传送门 一种奇奇怪怪的rmq做法。依赖于数据随机。 首先对序列分块,然后处理块内前后缀,处理块间st表。 然后查询的时候块间表查询。可以做到 但是有一个问题就是在同一块中没法做。只有暴力。 但是数据随机所以落到同
阅读全文
摘要:题面传送门 不得不说原题数据是真的水,先是一个负号没打,然后数据范围看错还过。 首先为了确保一定的单调性,要把所有边按开始时间排序。这个可以用桶排。 然后设为走了第条边最小的烦躁值。 那么显然有方程式$dp_i=\min\limits_{dp_j+A(p_i-q_j)2+B(p_i
阅读全文
摘要:题面传送门 还好的一道题吧。 首先显然可以状压dp 然而我们发现我们根本不需要知道这个的具体的情况,换而言之,两列交换对是否可以没有影响。 所以我们可以设为行个列个,个列两个,转移时分类讨论一下即可。 时间复杂度 code: #incl
阅读全文
摘要:题面传送门 这种东西显然不太好做。 所以考虑使用万能的分块。 对询问分块,每个一块,然后我们发现,对于每个块中只有条边被修改,所以可以暴力加入并查集。 然后对于每个块将询问和不被修改的边都按边权排序然后尺取出相应的边计入并查集即可。算完联通块大小以后要回退。 取$\sqrt
阅读全文
摘要:题面传送门 用SA做起来是很妙的一道题可惜我不会 智商不够可以拿自动机来凑。 反向建立SAM,则每两个后缀的lcp就是lca。 对于每个节点用子树合并。注意有负数所以要存最大和最小值。 然后后缀和一遍即可。 时间复杂度 code: #include<cstdio> #include<al
阅读全文
摘要:题面传送门 很妙的一道题啊。 这道题看上去很不可做。 然而我们发现 然后我们又发现一些数的乘积为完全平方数那么所有质因数的次数都是的倍数。 那么我们可以把所有质因数状压起来扔到线性基里。 线性基外面的全部都是能表示的。 设线性基内元素个数为,则答案为$2^-1
阅读全文
摘要:题面传送门 完全没有紫题难度吧qwq 看到时间这么小考虑枚举最后的结束时间,那么维护两个前缀和分别表示前后能要换的天数然后分类讨论即可。 但是还要开ull是没有想到的。 时间复杂度 code: #include<cstdio> #define ull unsigned long long
阅读全文
摘要:题面传送门 居然一遍过我太惊讶了。 首先,题目中那个期望是假的,实际要求出现次数。 然后你会发现对于一个,答案不会超过 那么总的答案就是 你会发现这个其实和不同阶,这个甚至两个log都可以过。 如果我们对于每一个答案的增加然后树状数组维护一下
阅读全文
摘要:题面传送门 这个可真的难写,几个月前就想出来怎么做了直到今天才花了3个小时写掉。 首先显然可以树套树优化建图达到的时空复杂度。 但是发现这个居然卡空间。 所以我们可以不把边建出来而模拟dijkstra的过程。 我们只需要维护三个操作:删除一个点,给一个区间取,求全局
阅读全文
摘要:题面传送门 什么时候ZJOI能像SHOI那样啊qwq 显然一个凸包转了一圈,每个转弯的地方都是圆弧,所以直接把圆弧扔了求圆心凸包然后加上一个圆的周长即可。 然而这道题是真的坑。 首先是先读入竖直再水平,然后还有精度问题。 code: #include<cstdio> #include<cmath>
阅读全文
摘要:题面传送门 鸽了大半个月了回来补掉了这道题。 按照坐标轴排序的比极角序不知道好写多少啊。 首先按照为第一关键字,为第二关键字排序。 然后用叉积判断当前栈内的点和要入栈的点的位置关系,如果顺时针就弹掉。 然后这样可以构造出下凸壳。再来一遍构造上凸壳即可。 code: #include<cs
阅读全文
摘要:题面传送门 不得不说这题是真的暴力。 我们发现这个东西不是NTT模数很难搞怎么办呢? 我们联想到万能的FFT,这个东西不需要模数。 但是中间不能取膜,实际上答案会大于longlong 那么我们可以把它拆开。拆成的形式就可以做了。 然后我们其实要求这个东西$a_1b
阅读全文
摘要:题面传送门 写了一个晚上才写完+调完,AC那一刻感觉神清气爽。 询问某一个串在另一个串内出现了几次想到AC自动机,但是因为强制在线而AC自动机无法动态更新fail树所以考虑SAM 然后发现我们只要动态维护LCT虚子树大小即可。 然而虚子树大小其实挺难维护的,所以可以改成每个点的链加。 时间复杂度$O
阅读全文
摘要:题面传送门 考试时写树套树结果没写完一分没有。靠暴力水了分。 首先肯定要分开讨论。 如果显然先将所有插入字典树然后把这一组拿去查即可。 考虑怎么做。发现如果将插入,当做询问插入其实是一样的,所以先将每个二元组插进去然后查询
阅读全文