摘要: 看我之前写的狗屎:https://www.becoder.com.cn/article/11836。 当时根本就不懂斜率优化是什么。 今天真的懂了,来写总结。 1 问题转化 对于一类 dp 方程式:\(f(i) = \min \{ f(j) + A(j)*g(i)+B(j)+t(i) \}\)。可以 阅读全文
posted @ 2024-09-20 11:52 LCat90 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 昨天的也一起写了。 abc371F:两种做法。等差数列线段树和 ODT。两种做法实现难度相同,不过后者似乎要快很多。 花 1 个小时复习了 ODT 怎么打,他复杂度正确的原因是因为每次 query(l, r) 过后马上进行了 assign。然后就是基础的 split 和 getpos 操作,记得给边 阅读全文
posted @ 2024-09-19 23:25 LCat90 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 果然独立思考过后做题确实要慢得多,并且独立调题因为太菜容易破防。 Day 32 阅读全文
posted @ 2024-09-18 23:58 LCat90 阅读(5) 评论(0) 推荐(0) 编辑
摘要: T1: 赛时一眼秒了,然后爆单了。 没有什么思路就要想到一些套路比如把模拆成减除,然后发现有个 \(k\),自然思路就出来了,\(k\) 必然是一个数的因数。复杂度是根号的。 注意特判 \(s=0,s<0\)!!! T2: 一眼二分贪心……显然不能优化建图 按照 a 排序也是显然的。 T3: 最唐的 阅读全文
posted @ 2024-09-08 17:23 LCat90 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 说一下 E,以及这道题以外的东西。 一直在想容斥,一直在想结论。 一直在想 dp 的线性转移。 你 tmd 连暴力 dp 都不会了吗?\(dp_i\) 表示 \([1,i]\) 合法的方案数。 转移的 j 要满足 \(pre_i-pre_{j-1}\neq k\),这玩意直接 map 存一下不就 t 阅读全文
posted @ 2024-09-07 22:30 LCat90 阅读(19) 评论(0) 推荐(0) 编辑
摘要: https://www.cnblogs.com/LCat90/collections/19486 阅读全文
posted @ 2024-09-06 19:16 LCat90 阅读(5) 评论(0) 推荐(0) 编辑
摘要: Day3 列队:注意到学生的相对顺序不会变,然后你可以区间查询然后线段树二分加一点点简单的贡献计算解决。 可持久化串串:对 Trie 倍增,维护跳 nxt 的过程,如果 nxt 走的不超过一半,则这个串的后缀必然有循环节,跳过这些循环节找到最前面不规则那一段即可。 Day12 新知识:Dsu on 阅读全文
posted @ 2024-09-06 17:09 LCat90 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 很好人类智慧题,比这几天做的紫黑都要难。 进度:171~183。 183 A:根据对称性逐步确定最高位,分类讨论奇偶。 B:正(限制太少无法决策)难则反。考虑操作 B,去匹配 A。原来的操作等价于,对于 \(B_i=B_j\) 且 \(|i-j|\le k\),将其中一个 \(B\) 设置为任意整数 阅读全文
posted @ 2024-09-06 09:19 LCat90 阅读(7) 评论(0) 推荐(0) 编辑
摘要: T1 怎么能花 1.5 个小时的啊。tmd 这玩意不是手玩 1min 直接就做完了吗。 T2 的话注意【钦定转移 1 个方向】,区间 dp 很好写,差分也很典。 T3 是个康托展开。然后发现排列进制数你可以算初始和末尾的状态。末状态的得出,你考虑最后面每一位自己动,后面不变的次数是 \(n!\) 级 阅读全文
posted @ 2024-09-04 00:14 LCat90 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 这次算是完全搞懂了吧()()( 其实追溯到了单调栈的一些本质问题,而且搬到笛卡尔树上特别清楚了。 你线段树维护单调栈上升/下降,本质上是维护笛卡尔树里面一个点/根的最长左链/右链。 #include <bits/stdc++.h> #define raed read #define cacl cal 阅读全文
posted @ 2024-08-23 23:41 LCat90 阅读(17) 评论(0) 推荐(0) 编辑