随笔分类 -  题解-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 阅读全文
posted @ 2020-12-02 21:00 gmh77 阅读(195) 评论(0) 推荐(0) 编辑
摘要:题目描述 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]中维护左链位置以及 阅读全文
posted @ 2020-11-25 20:42 gmh77 阅读(269) 评论(0) 推荐(0) 编辑
摘要:题目描述 https://loj.ac/problem/3058 单位根反演 因为ω太难写了所以用w代替 有[n|k]=\frac{1}\sum_ w_n 证明: 当n|k时显然是1,否则wn1wn1=0 题解 一开始想矩乘存多项式然后快速幂循环卷积,然后多乘了一 阅读全文
posted @ 2020-10-15 12:39 gmh77 阅读(122) 评论(0) 推荐(0) 编辑
摘要:题目描述 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 阅读全文
posted @ 2020-10-08 07:58 gmh77 阅读(134) 评论(0) 推荐(0) 编辑
摘要:题目描述 https://loj.ac/problem/541 题解 一直在往数据随机的方向想 把<=A中的删除操作看成元素的话,那么就是求一个队列里的最小值,单调队列维护 >A的部分再维护一个未选的最小值,选了之后就和上面一样了,最后再取min code #include <bits/stdc++ 阅读全文
posted @ 2020-10-08 07:52 gmh77 阅读(175) 评论(0) 推荐(0) 编辑
摘要:题目描述 https://loj.ac/problem/538 题解 可以感受到增长速度很快,并且很快会同符号 所以推个几百项之后即可直接判断,要注意特殊情况0和边界 code #include <bits/stdc++.h> #define fo(a,b,c) for (a=b; a<=c; a+ 阅读全文
posted @ 2020-10-08 07:47 gmh77 阅读(169) 评论(0) 推荐(0) 编辑
摘要:题目描述 题解 第一次写插头dp 求哈密顿回路:https://blog.csdn.net/litble/article/details/79369147,本质是维护轮廓线+左右括号序列 本题只需要维护下/右插头即可,状态数是C(m,3)级别的,压一压即可 code #include <bits/s 阅读全文
posted @ 2020-08-13 22:08 gmh77 阅读(267) 评论(0) 推荐(0) 编辑
摘要:题目描述 https://loj.ac/problem/2985 太长了不写 题解 刚了几天刚出了69分加一些奇奇怪怪的做法 subtask3 首先根据0和N-1可以找到1连续段的开头,然后二分 把不确定性消掉,只需要两个一组询问即可,根据奇偶性讨论之后的和只有0和2 subtask5 首先用2N的 阅读全文
posted @ 2020-08-11 16:13 gmh77 阅读(101) 评论(0) 推荐(0) 编辑
摘要:上午听WC的时候听到的并没有细讲的东西 整数划分 http://oeis.org/A000041 n很小的时候是入门级别的东西,设f[i][j]表示总和为i个数为j的方案,每次加上一个1或者对全部的+1 考虑答案的生成函数: \(\prod_{i>=1} \sum_j x^{ij}=\prod_{i 阅读全文
posted @ 2020-08-02 19:53 gmh77 阅读(949) 评论(0) 推荐(0) 编辑
摘要:题目描述 题解 至少相比一年以前想到了拆y^i,只不过没想到提y^n出来而已(确信) op=0 块=点-边,hash op=1 假设一棵红树的块数为j,则贡献为y^j*方案数 方案数直接用prufer算nai会算重,会连上蓝树的边 套路:恰好=-1后的至少 问题是直接把(y-1+ 阅读全文
posted @ 2020-07-18 18:58 gmh77 阅读(147) 评论(0) 推荐(0) 编辑
摘要:题目描述 题解 不知道有没有一个log的,两个log简单自然 没有l限制的一个log做法:很显然的想法是dfs维护栈二分,问题是要弹栈 用树来维护栈,一个点到根的路径就是该点处的栈,倍增弹栈&查找即可一个log 加上l限制后会出问题,考虑naive的log^3做法,直接树剖线段树维护凸壳+二分 发现 阅读全文
posted @ 2020-07-12 16:52 gmh77 阅读(120) 评论(0) 推荐(0) 编辑
摘要:题目描述 题解 并没有注意到相邻串字母不同,x=1想到用辅助数组加速跳next 首先显然离线,对每一段末尾求next,next的定义修改为匹配到的位置一定所在串的末尾 第一段长度大于等于,其他段长度刚好等于,把每一段当作特殊字符来做kmp,在找的时候算答案,答案是若干等差数列之和 由于kmp时间均摊 阅读全文
posted @ 2020-07-11 18:19 gmh77 阅读(163) 评论(0) 推荐(0) 编辑
摘要:题目描述 题解 枚举外层变成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 阅读全文
posted @ 2020-07-03 21:34 gmh77 阅读(312) 评论(0) 推荐(0) 编辑
摘要:题目描述 题解 签到题,比T3不知道阳间到哪里去了 分开计算每个区间的答案,一次修改对于一个区间有5种情况: ①没有任何影响,即在父亲区间外 ②使当前区间直接覆盖 ③使当前区间及祖先区间清空 ④覆盖祖先区间 ⑤把祖先区间的标记传到当前区间 分别算出五种情况的概率(相加要为1),设dpf[i][0/1 阅读全文
posted @ 2020-07-02 16:46 gmh77 阅读(334) 评论(0) 推荐(0) 编辑
摘要:题目描述 题解 简单数论题 式子太多了所以简略说明 type=-1 看错题的产物 求\sum_ \sum_ \sum_^ (\frac{gcd(i,j)}{lcm(i,k)}) 以下定义(a,b)=gcd(a,b) \(\sum_{i=1}^{A} \frac{1}{i}\sum_{j=1} 阅读全文
posted @ 2020-06-27 17:22 gmh77 阅读(186) 评论(0) 推荐(0) 编辑
摘要:题目描述 保序回归 给出序列a和形如ai>=aj的限制条件,把x修改成y的代价为(|x-y|)^k,求最小代价 整体二分,对当前值域二分从而变成每个数修改为mid或mid+1,修改为mid的最终值<=mid,修改为mid+1的最终值>=mid+1,继续往下二分 证明感受一下 一般情况下用网络流来求 阅读全文
posted @ 2020-06-25 14:25 gmh77 阅读(585) 评论(0) 推荐(0) 编辑
摘要:题目描述 给出只包含小写字母a,b的两个字符串s,t,q次询问,每次询问s[l..r]和t的最长公共子串长度。 基数排序 复习SA的时候发现了不得了的东西 并不需要真正一维维排序 在每一层的时候按合并的后半段把sa数组搞出来,rank重了就随便放 这样就把第二维排序了,按第二维的顺序加,新的rank 阅读全文
posted @ 2020-06-19 08:39 gmh77 阅读(282) 评论(0) 推荐(0) 编辑
摘要:[Toc] 被吊打了 先鸽着 JOI的本质:数 据 结 构 优 化 建 图 D1T1 https://loj.ac/problem/3271 爆零辣 显然的dp:设f\[i]\[j]\[0/1]表示当前到i放了j个A当前是A/B 是否合法 发现对于每个i和0/1,合法的j是一个连续段 证明可以归纳, 阅读全文
posted @ 2020-03-29 21:57 gmh77 阅读(321) 评论(0) 推荐(0) 编辑
摘要:题目描述 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 解释】 共有 阅读全文
posted @ 2020-01-18 08:01 gmh77 阅读(262) 评论(0) 推荐(0) 编辑

1
点击右上角即可分享
微信分享提示