随笔分类 - 题解-LOJ
1
摘要:题目描述 https://loj.ac/p/3385 题解 dp维护路径线条,每次把当前的线条拆开加上新的 设f[i,0/1,0/1/2]表示点i颜色为0/1,下面已固定了0/1/2个端点的答案 分类讨论,注意可以多折一次来改变i和儿子的颜色,走完的儿子颜色必须为1 一开始拓扑求出0的虚树,在上面d
阅读全文
摘要:题目描述 https://loj.ac/p/6611 题解 当s=0时只用考虑相邻两个,所以设f[i,j]表示做完[i,j]的答案,转移枚举最后一个选的k 如果s!=0,那么发现多出来的i+1,i+2与i无关,所以只需要维护i+1,i+2的操作次数 按删的时间建树,则在f[i,j]中维护左链位置以及
阅读全文
摘要:题目描述 https://loj.ac/problem/3058 单位根反演 因为ω太难写了所以用w代替 有 证明: 当n|k时显然是1,否则 题解 一开始想矩乘存多项式然后快速幂循环卷积,然后多乘了一
阅读全文
摘要:题目描述 https://loj.ac/problem/539 题解 显然是跑到没油了才加油,所以设f[i,j]表示从点i开始钱为j的最大距离,逆着做 转移考虑设g[i,j,k]表示从i到j走2^k步的答案,倍增求 再求出w[i,j,k]表示从i到j走k步的答案,拆位后做log次 最后二分答案 co
阅读全文
摘要:题目描述 https://loj.ac/problem/541 题解 一直在往数据随机的方向想 把<=A中的删除操作看成元素的话,那么就是求一个队列里的最小值,单调队列维护 >A的部分再维护一个未选的最小值,选了之后就和上面一样了,最后再取min code #include <bits/stdc++
阅读全文
摘要:题目描述 https://loj.ac/problem/538 题解 可以感受到增长速度很快,并且很快会同符号 所以推个几百项之后即可直接判断,要注意特殊情况0和边界 code #include <bits/stdc++.h> #define fo(a,b,c) for (a=b; a<=c; a+
阅读全文
摘要:题目描述 题解 第一次写插头dp 求哈密顿回路:https://blog.csdn.net/litble/article/details/79369147,本质是维护轮廓线+左右括号序列 本题只需要维护下/右插头即可,状态数是C(m,3)级别的,压一压即可 code #include <bits/s
阅读全文
摘要:题目描述 https://loj.ac/problem/2985 太长了不写 题解 刚了几天刚出了69分加一些奇奇怪怪的做法 subtask3 首先根据0和N-1可以找到1连续段的开头,然后二分 把不确定性消掉,只需要两个一组询问即可,根据奇偶性讨论之后的和只有0和2 subtask5 首先用2N的
阅读全文
摘要:上午听WC的时候听到的并没有细讲的东西 整数划分 http://oeis.org/A000041 n很小的时候是入门级别的东西,设f[i][j]表示总和为i个数为j的方案,每次加上一个1或者对全部的+1 考虑答案的生成函数: \(\prod_{i>=1} \sum_j x^{ij}=\prod_{i
阅读全文
摘要:题目描述 题解 至少相比一年以前想到了拆y^i,只不过没想到提y^n出来而已(确信) op=0 块=点-边,hash op=1 假设一棵红树的块数为j,则贡献为y^j*方案数 方案数直接用prufer算会算重,会连上蓝树的边 套路:恰好=-1后的至少 问题是直接把(y-1+
阅读全文
摘要:题目描述 题解 不知道有没有一个log的,两个log简单自然 没有l限制的一个log做法:很显然的想法是dfs维护栈二分,问题是要弹栈 用树来维护栈,一个点到根的路径就是该点处的栈,倍增弹栈&查找即可一个log 加上l限制后会出问题,考虑naive的log^3做法,直接树剖线段树维护凸壳+二分 发现
阅读全文
摘要:题目描述 题解 并没有注意到相邻串字母不同,x=1想到用辅助数组加速跳next 首先显然离线,对每一段末尾求next,next的定义修改为匹配到的位置一定所在串的末尾 第一段长度大于等于,其他段长度刚好等于,把每一段当作特殊字符来做kmp,在找的时候算答案,答案是若干等差数列之和 由于kmp时间均摊
阅读全文
摘要:题目描述 题解 枚举外层变成s^2-a^2的形式,平方求和算即可 code #include <bits/stdc++.h> #define fo(a,b,c) for (a=b; a<=c; a++) #define fd(a,b,c) for (a=b; a>=c; a--) #define m
阅读全文
摘要:题目描述 题解 签到题,比T3不知道阳间到哪里去了 分开计算每个区间的答案,一次修改对于一个区间有5种情况: ①没有任何影响,即在父亲区间外 ②使当前区间直接覆盖 ③使当前区间及祖先区间清空 ④覆盖祖先区间 ⑤把祖先区间的标记传到当前区间 分别算出五种情况的概率(相加要为1),设dpf[i][0/1
阅读全文
摘要:题目描述 保序回归 给出序列a和形如ai>=aj的限制条件,把x修改成y的代价为(|x-y|)^k,求最小代价 整体二分,对当前值域二分从而变成每个数修改为mid或mid+1,修改为mid的最终值<=mid,修改为mid+1的最终值>=mid+1,继续往下二分 证明感受一下 一般情况下用网络流来求
阅读全文
摘要:题目描述 给出只包含小写字母a,b的两个字符串s,t,q次询问,每次询问s[l..r]和t的最长公共子串长度。 基数排序 复习SA的时候发现了不得了的东西 并不需要真正一维维排序 在每一层的时候按合并的后半段把sa数组搞出来,rank重了就随便放 这样就把第二维排序了,按第二维的顺序加,新的rank
阅读全文
摘要:[Toc] 被吊打了 先鸽着 JOI的本质:数 据 结 构 优 化 建 图 D1T1 https://loj.ac/problem/3271 爆零辣 显然的dp:设f\[i]\[j]\[0/1]表示当前到i放了j个A当前是A/B 是否合法 发现对于每个i和0/1,合法的j是一个连续段 证明可以归纳,
阅读全文
摘要:题目描述 Description Input Output Sample Input Sample Input1 4 10 3 6 2 9 Sample Input2 8 35 3 7 1 5 10 2 11 6 Sample Output Sample Output1 6 【样例 1 解释】 共有
阅读全文
1