随笔分类 -  其他比赛

摘要:做完 pkusc2022 day2t3 雀圣之后跑来做这题。 首先我们考虑雀圣那题。那个题是说给你一副 \(13\) 张的手牌,让你算向听数。设 \(dp[i][j][0/1][p1][p2][up][dn]=0/1\) 表示考虑到 \(i\) 花色第 \(j\) 张牌,是否已经有雀头,上张牌剩下 阅读全文
posted @ 2022-05-27 20:43 cunzai_zsy0531 阅读(228) 评论(0) 推荐(0)
摘要:题面 \(k=1\) 的时候就是边数 \(\times 2\) 再减去直径长度。考虑 \(k=2\) 的时候,减去的相当于是选出的两条路径的对称差。考虑一个贪心,第一次取某一条直径一定不会更劣,这个感性理解就好。然后把这个直径的边权都设成 \(-1\) 再跑一遍直径就行了。 点击查看代码 const 阅读全文
posted @ 2022-05-20 12:13 cunzai_zsy0531 阅读(29) 评论(0) 推荐(0)
摘要:题面 原题 \(n\leq 5000\),加强版 \(n\leq 10^5\),实际上能做 \(n\leq 10^6\)。 长链剖分。做这种很多点满足限制的题,套路差不多。设 \(f_{u,i}\) 表示 \(u\) 子树内到 \(u\) 距离为 \(i\) 的点数,\(g_{u,i}\) 表示 \ 阅读全文
posted @ 2022-05-20 12:11 cunzai_zsy0531 阅读(49) 评论(0) 推荐(0)
摘要:题面 首先可以注意到一点:如果这棵树确定了根节点,那么所有的蓝边都只能是爷爷-父亲-儿子这样的边,不可能有儿子-父亲-另一个儿子这样的(建不出来)。 基于上述结论的一个 \(O(n^2)\) dp就是:枚举根节点,设 \(f_{u,0/1}\) 表示 \(u\) 节点子树中,\(u\) 是否作为某一 阅读全文
posted @ 2022-05-20 11:58 cunzai_zsy0531 阅读(52) 评论(0) 推荐(0)
摘要:题面 考虑把操作时间当作下标建立线段树,每次操作要么是单点修改为 \(x\),要么是修改为 \(1\)。输出答案就是输出线段树根节点的答案。 点击查看代码 #include<iostream> #include<cstdio> using namespace std; const int N=1e5 阅读全文
posted @ 2022-05-19 16:24 cunzai_zsy0531 阅读(20) 评论(0) 推荐(0)
摘要:题面 本来就是个裸的KMP,但是这个题是有删除的,所以可以维护一个栈,每次的 \(j\) 都继承栈顶元素的 \(j\),然后如果找到了一个匹配,就直接弹栈即可。因为只会进栈 \(O(n)\) 次,所以总复杂度也是 \(O(n)\) 的。这个题算是栈的妙用了。 点击查看代码 #include<iost 阅读全文
posted @ 2022-05-19 16:22 cunzai_zsy0531 阅读(63) 评论(0) 推荐(0)
摘要:题面 平面上两个操作:给一些坐标加权和查询矩形点权和。坐标 \(x,y\leq 2\times 10^6\),加权操作最多 \(1.6\times 10^5\) 个,查询操作最多 \(10000\) 个。 感觉时间和 \(x,y\) 大概能构成个三维偏序,直接上 cdq 分治。矩形查询看起来不是很好 阅读全文
posted @ 2022-05-18 20:06 cunzai_zsy0531 阅读(31) 评论(0) 推荐(0)
摘要:题面 考虑整体二分。solve(L,R,l,r) 表示解决的子问题为答案区间在 \([L,R]\) 内的所有问题 \(q_l...q_r\)。边界条件很容易,主要是考虑如何二分。\([L,R]\) 这一维相当于是描述的时间,那么考虑一个 \(mid\),然后把所有 \([L,mid]\) 时刻的修改 阅读全文
posted @ 2022-05-18 20:03 cunzai_zsy0531 阅读(35) 评论(0) 推荐(0)
摘要:Post time: 2021-04-06 20:26:05 省选前写道LCT,rp++! 题目链接 这道题和P4172水管局长有点像。需要维护一个动态最大生成树,然后对于每个询问求两点之间的边权和。维护动态最大生成树的话,就是维护一个边权 \(\min\) 和这条最小边权的边的编号。长度就维护一个 阅读全文
posted @ 2022-04-21 20:22 cunzai_zsy0531 阅读(56) 评论(0) 推荐(0)