摘要: 题目链接 为什么求Z函数的过程又被称为【扩展KMP】呢?因为KMP算法是可以求出哪些后缀能与前缀完全匹配的(在最后跳失配树),而Z函数则对于那些不能完全匹配的后缀,求出了最大的匹配长度 现在你已经将问题转化为:在未被标记的后缀中,快速锁定当前新增的字符会使得哪些后缀失配 “未被标记”太抽象了,回溯这 阅读全文
posted @ 2024-09-25 20:39 D06 阅读(51) 评论(0) 推荐(0)
摘要: 题目链接 时隔半年,自己终于从看不懂题解到能独立做出这道题了,开心~ 貌似只有我是把括号序列转化为树,然后跑树形DP的。复习一下:DFS进入某个节点的时候(对应入边)记录一个左括号,退出某个节点的时候(对应回溯边)记录一个右括号,一个节点对应一对括号~ 题解描述的是直接线性DP的做法,对于所有可能的 阅读全文
posted @ 2024-09-25 16:09 D06 阅读(17) 评论(0) 推荐(0)
摘要: 题目链接 【构造思路】有序化问题,按b从大到小考虑,构造当前的合法方案中包容性最强的方案,动态判断 首先,对于最大的b,让r=l就好了,需不需要让r稍大一点,来让它避免被其他区间覆盖?不可能有这种情况 其次,对于所有的b-1,你需要为所有的b都找到一个覆盖它的区间,并且所有的b-1之间都不会相互覆盖 阅读全文
posted @ 2024-09-14 15:10 D06 阅读(38) 评论(0) 推荐(0)
摘要: 题目链接 赛场上想到了n方枚举n方检验的4方做法,提前想好了实现细节一点点实现,最后一遍过了样例,还是很感动的 赛场上超时了,但是交到Codeforces上能以900ms通过 正解的确是n^3的,考虑优化枚举,确定1号节点在A后,对于每个1->x->y->1的三元环,要么x在B,y在C,要么x,y都 阅读全文
posted @ 2024-09-08 22:14 D06 阅读(18) 评论(0) 推荐(0)
摘要: 题目链接 题解好抽象……费了好大劲儿才(自认为)勉强看懂代码,也不打算自己重写了,下附自己写的log平方(我的实现可能是立方)代码和题解代码 首先,朴素模拟的复杂度似乎不对,但通过打表找规律可以发现一个优良性质——对于每次合并完的结果,至多有两个长度相同的互异段,于是朴素模拟的复杂度的确是log方的 阅读全文
posted @ 2024-08-26 00:17 D06 阅读(49) 评论(0) 推荐(0)
摘要: 题目链接 异或运算对加法不满足分配律 mod(2^32)可以视为保留二进制表示下的32位 大胆猜测解是唯一的 点击查看代码 #include <bits/stdc++.h> using namespace std; unsigned int a[300005],b[300005],ans[30000 阅读全文
posted @ 2024-08-25 15:30 D06 阅读(31) 评论(0) 推荐(0)
摘要: 题目链接 学会用【替换】的思维方式去看待问题,也就是先假设所有的攻击都造成x伤害,再逐次将攻击的伤害由x替换成y 当然你猜的结论也是对的 输出用“endl"奇慢,本机感觉跑了20s才跑完,换成"\n"就几乎秒出结果了 如果与答案文件只差一个字符,可能是因为少了一个换行符号 点击查看代码 #inclu 阅读全文
posted @ 2024-08-22 21:16 D06 阅读(21) 评论(0) 推荐(0)
摘要: 题目链接 通过矩阵转置,归并行、列两种情况 先行后列表示坐标 复杂的代码修改,或许不妨直接重构 点击查看代码 #include <bits/stdc++.h> using namespace std; char c[3005][3005]; int s[3005][3005],u,v,n,m,l[3 阅读全文
posted @ 2024-08-21 09:15 D06 阅读(15) 评论(0) 推荐(0)
摘要: 题目链接 要把二进制数的“每一位”取反,用^((1<<n)-1),(~运算会得到一个负数,而且也没有取出前n位) 阅读全文
posted @ 2024-08-14 14:18 D06 阅读(38) 评论(0) 推荐(0)
摘要: 题目链接 可以证明在k次二分后区间长度最多只有两种,且差最多为1(符合直觉的结论) 可以将二分视为对数的划分,而与l和r的取值无关 用unordered_map时常会出现奇怪的问题,改成map就好了 点击查看代码 #include <bits/stdc++.h> using namespace st 阅读全文
posted @ 2024-08-12 23:23 D06 阅读(60) 评论(0) 推荐(0)
//雪花飘落效果