随笔分类 -  题解

上一页 1 2 3 4 5 6 7 ··· 23 下一页
摘要:对于这个网格图四联通建边,然后建圆方树。 很显然一个图中删掉一个点增加的连通块数量为圆方树上这个点的度数 −1-1−1。 于是直接就做完了。每个点累加答案,求个平均数就好了。 #include <bits/stdc++.h> using namespace std; #define int long 阅读全文
posted @ 2023-12-24 11:50 HappyBobb 阅读(5) 评论(0) 推荐(0) 编辑
摘要:考虑把题目中的边设为有向边,i→pii \rightarrow p_ii→pi​。考虑每个连通块。 显然每个连通块是一个 xxx 个点 xxx 条边的图,且至多只有一个自环。于是这必然是一棵树,或者内向基环树。 首先确定最终树的根。如果存在任意一个 pi=ip_i=ipi​=i,那么根就可以确定为 阅读全文
posted @ 2023-12-22 21:38 HappyBobb 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题意:给定 n,kn,kn,k。定义一个数是美好的当且仅当这个数的十进制无前导零表示下数位上不同数个数 ≤k\leq k≤k,求 ≥n\geq n≥n 的最小的美好的数。多测。1≤n≤109,1≤k≤101 \leq n \leq 10^9, 1 \leq k \leq 101≤n≤109,1≤k≤ 阅读全文
posted @ 2023-12-18 22:07 HappyBobb 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题意:给 nnn 个点的树和 kkk,边无权。问有多少种方案,选出 kkk 个点且 kkk 个点中两两距离相等。对 109+710^9+7109+7 取模。2≤k≤n≤1002 \leq k \leq n \leq 1002≤k≤n≤100,多测。 特判 k=2k=2k=2 时,输出 (n2)\db 阅读全文
posted @ 2023-12-18 21:12 HappyBobb 阅读(7) 评论(0) 推荐(0) 编辑
摘要:考虑树上背包。但是直接设 fi,jf_{i,j}fi,j​ 表示以 iii 为根的子树中用了 jjj 次魔法难以转移,问题在于难以确定 iii 的儿子是否呗魔法标记。 于是加一维,fi,j,0/1f_{i,j,0/1}fi,j,0/1​ 表示以 iii 为根的子树中用了 jjj 次魔法,iii 点被 阅读全文
posted @ 2023-12-17 21:28 HappyBobb 阅读(7) 评论(0) 推荐(0) 编辑
摘要:考虑离线猫树分治。分治函数 solve(l,r) 表示将所有询问区间 [x1,x2][x_1, x_2][x1​,x2​] 完全包含于这个区间的询问区间答案处理出来。 考虑在 midmidmid 两侧的递归处理,现在要考虑的是 x1∈[l,mid],x2∈(mid,r]x_1 \in [l,mid] 阅读全文
posted @ 2023-12-12 21:32 HappyBobb 阅读(4) 评论(0) 推荐(0) 编辑
摘要:考虑双指针,枚举左端点 iii,看右端点 jjj 最多拓展到哪里。 我们对每个点开个 vector,存这个点选了之后哪些的另一个不能选。 对于 jjj,如果存在这个点的 vector 内的数 kkk 满足 i≤k<ji \leq k < ji≤k<j,那么 jjj 就不能作为右端点了。我们直接对于每 阅读全文
posted @ 2023-11-28 21:27 HappyBobb 阅读(4) 评论(0) 推荐(0) 编辑
摘要:比较好想,但是细节比较多。 我们考虑到最大流 最小割,于是我们直接刻画最小割即可。 由于图的特殊性质,左侧 i→i+1i \rightarrow i+1i→i+1 和右侧 i→i+1i \rightarrow i+1i→i+1 在最小割必然至多只会割一次。 我们假设左侧选的是割 i→i+1i \ri 阅读全文
posted @ 2023-11-17 15:23 HappyBobb 阅读(3) 评论(0) 推荐(0) 编辑
摘要:考虑倒着做,将删边变成加边,用并查集启发式合并维护并且在合并时更新贡献。 考虑现在有两个集合 SSS 和 TTT,设两点树上距离为 dis(u,v)dis(u, v)dis(u,v),则添加一条边时添加的贡献为 ∑(u,v)(u∈S,v∈T)[dis(u,v)=0]\sum \limits_{(u, 阅读全文
posted @ 2023-11-16 15:36 HappyBobb 阅读(6) 评论(0) 推荐(0) 编辑
摘要:我们注意到 (106)3=1018(10^6)^3 = 10^{18}(106)3=1018,也就是说,对于 b=3b=3b=3 时,a≤106a \leq 10^6a≤106。于是可以线性筛预处理 1∼1061 \sim 10^61∼106 的质数并且把每个质数的三次方加进去。 考虑对于小的 aa 阅读全文
posted @ 2023-11-10 21:48 HappyBobb 阅读(5) 评论(0) 推荐(0) 编辑
摘要:考虑二分答案。 每个点要么选 xxx,要么选 yyy,这本质上是一个 2-SAT 模型。 直接建边的话,枚举 i,ji,ji,j,并且判断 ∣xi−xj∣<d|x_i-x_j| < d∣xi​−xj​∣<d 时,若 iii 取 xxx,那么 jjj 取 yyy。其余的 (x,y),(y,x),(y, 阅读全文
posted @ 2023-11-09 21:35 HappyBobb 阅读(3) 评论(0) 推荐(0) 编辑
摘要:板子。 考虑二分答案,每个点只有两种选择,并且对于任意两个点之间有一些逻辑关系。假设二分的是 xxx,则 ∣ai−aj∣<x|a_i-a_j| < x∣ai​−aj​∣<x 表示 iii 和 jjj 不能同时选早着陆。对于其他的也一样。 显然这是个 2-SAT 问题,直接做就可以了,复杂度平方对数。 阅读全文
posted @ 2023-11-06 22:12 HappyBobb 阅读(6) 评论(0) 推荐(0) 编辑
摘要:注意到一个点到连通块中最远的点,必然是两直径端点之一。 我们需要添加一个点并连边,动态维护直径。经典结论是,两个连通块合并,新的直径端点必然是原来两个连通块的 444 个直径之中。 由于这题只新增一个点而非连通块合并,所以我们只需要比较 333 条路径长度即可。 使用 LCT 动态维护加边和求路径长 阅读全文
posted @ 2023-11-05 20:52 HappyBobb 阅读(6) 评论(0) 推荐(0) 编辑
摘要:赛时差一点过,因为缺少了一个关键性质的观察。 容易发现可以 O(nm)O(nm)O(nm) 建图然后跑类似过河卒的有向图博弈。 注意到当我打出这张牌,对手一定会打出攻击力大于这张牌的防御力并且那张牌防御力最大,显然可以二分,然后就可以将图的边数减小了。这就是关键性质。 #include <bits/ 阅读全文
posted @ 2023-11-05 18:44 HappyBobb 阅读(2) 评论(0) 推荐(0) 编辑
摘要:Hard Version 的做法貌似是 DP,但是 Easy Version 的做法也十分有启发性。 Easy Version 中 k=2k=2k=2,即只进行两次操作。通常见到两次操作,大概的做法就是枚举其中一次操作,本题也是这样。 设 cic_ici​ 表示第 iii 个城市在这 mmm 天内下 阅读全文
posted @ 2023-10-31 19:33 HappyBobb 阅读(32) 评论(0) 推荐(0) 编辑
摘要:考虑这样一个做法: 从前往后将每一块砖推入栈顶,如果栈顶连续 k+1k+1k+1 个元素有 kkk 个白色,111 个黑色,就把这些捆绑作为一组。最后逆序输出这些组。 显然这是正确的,因为这不会导致经过消除过的砖。 考虑使用平衡树维护,开两个平衡树,分别维护黑色和白色的栈,每次相当于问黑色的第 kk 阅读全文
posted @ 2023-10-20 11:21 HappyBobb 阅读(3) 评论(0) 推荐(0) 编辑
摘要:考虑到 n,m≤1000n, m \leq 1000n,m≤1000,所以直接模拟是可行的。 一开始,预处理出以每个点为左上角的 a×ba \times ba×b 的矩形的答案。矩形和显然可以二维前缀和,最小值可以 ST 表配合 multiset 做到一只 log⁡\loglog,也可以单调队列把 阅读全文
posted @ 2023-10-19 12:54 HappyBobb 阅读(3) 评论(0) 推荐(0) 编辑
摘要:手玩一下发现,如果我们建一个二分图,对于点集 SSS 每个点 (xi,yi)(x_i,y_i)(xi​,yi​),连左部 xix_ixi​ 到右部 yiy_iyi​,那么拓展后 ∣S∣=|S| = ∣S∣= 每个连通块的左部点数乘以右部点数。 于是我们可以愉快地线段树分治,使用可撤销并查集动态更新答 阅读全文
posted @ 2023-10-16 18:33 HappyBobb 阅读(9) 评论(0) 推荐(0) 编辑
摘要:考虑线段树分治。 每一条边存在的时间是若干个区间,在线段树上将这些区间加入这条边,离线之后使用可撤销并查集按秩合并。如果 111 点的根所在集合大小为 nnn,则是连通,输出 r−l+1r-l+1r−l+1 个 Connected\texttt{Connected}Connected,否则递归往下即 阅读全文
posted @ 2023-10-14 17:56 HappyBobb 阅读(9) 评论(0) 推荐(0) 编辑
摘要:考虑维护 di,jd_{i,j}di,j​ 表示 (i,j)(i,j)(i,j) 往下连续 000 的数量,容易枚举每一行后处理出单调栈。枚举每一个 di,jd_{i,j}di,j​ 作为最小值时的答案取 max⁡\maxmax 即可。 阅读全文
posted @ 2023-10-12 22:01 HappyBobb 阅读(7) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 ··· 23 下一页
点击右上角即可分享
微信分享提示