随笔分类 - ST表
摘要:hdu1 04 Ball(bitset) 把所有边升序排序后,枚举中间大小的边$e$ 考虑对每个点$i$记录所有$dis(i,j)\le e$的$j$构成的集合$S_i$ 在枚举到边$(u,v,w)$时,以该边为中位数的三角形答案为$S_i \cap \bar{S_j}$ 利用bitset容易维护
阅读全文
摘要:题目大意: 一个字符串 $m$次询问 每次询问$s[a:b]$的所有子串与$s[c:d]$的$lcp$最大值 思路: 因为有$lcp$ 考虑把串翻转转化为$lcs$ 建立后缀树,如何在树上通过$s[c:d]$查找是否存在$s[a:b]$的一个子串 可以二分答案$x$,找到树上$d$点的最远的一个祖先
阅读全文
摘要:T1 bishop 题目大意: n个点组成了一些环 在这n个点中等概率选k个点(不能重复) 染了一个点就会染该环上的所有点 求所有点都被染色的概率 思路: 可以设$F_{i,j}$ 表示在$i$个环放$k$个点的方案数即$F_{i,j}=C(i,j)$,$if \space j==0 :F_{i,j
阅读全文
摘要:非常的菜 被初中踩成了弱智 T1 game 题目大意: n轮游戏 在第$i$轮已经获胜$j$轮继续获胜的概率为 p i j 每一轮可以选择放弃(即100%失败) 求最优策略下 获胜场数的期望 思路: 可以发现并不需要放弃 直接dp即可 1 #include<iostream> 2 #include<
阅读全文
摘要:题目大意: 一个无向图 Q个询问 每次给一些点的集合 求有多少个点满足去掉这个点后使这些点的集合中有一个点对不连通 思路: 点双缩点 相当于每次求这些点中的所有路径上的圆点个数 可以将这些点按dfs序排序 每次求a i 和 a i+1两个点路径上的圆点个数 最后答案/2 后减去这些点的个数(因为不能
阅读全文
摘要:题目大意: 一颗树 有一个点的集合 对于每个集合的答案为 从集合内一个点遍历集合内所有点再返回的距离最小值 每次可以选择一个点 若在集合外便加入集合 若在集合内就删除 求每次操作后这个集合的答案 思路: 对于每个集合 它的答案一定为从dfs序最小的开始依次遍历再回来 当加入一个点x的时候 可以找到它
阅读全文
摘要:T1 树上路径最小值 题目大意: 带点权的树 q次询问求每两个点之间路径上最小的点权 思路: 倍增lca裸题 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstdlib> 5 #include<cstrin
阅读全文
摘要:这章的数据结构题很真实 T1 排队 bzoj 1699 题目大意: 求静态一些区间的最大值-最小值 思路: ST表裸题 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<cstring> 5 #include
阅读全文
摘要:题目大意: 在整个区间里选k个长度在L-R之间的连续子段 求出最大答案 思路: 可以枚举区间的起点,然后可以查找长度合法的区间,从这段区间里找出来一个前缀和最大的然后减去起点 维护一个pq,每次弹出堆中最大的元素来,弹k次 堆里的每个元素记录这些信息:权值val,起点st,合法区间的l r,最大值的
阅读全文
摘要:并没有人做的模拟赛。。。 出题人hx,,, T1: 矩阵乘法原题: luogu 1939 【模板】矩阵加速(数列) T2: 一个数列中 一个区间满足,存在一个k(L <= k <= R),并且对于任意的i (L <= i <= R),ai都能被ak整除 这样的一个特殊区间 [L, R]价值为R -
阅读全文
摘要:我太菜了 今天才学会现场脑补ST表静态RMQ 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstdlib> 6 #include<cstring> 7 #incl
阅读全文
摘要:题目大意: 无向图上 每次询问两个点 寻找一条路径使这条路径上的最小值最大 思路: 先跑一个最大生成树 然后在最大生成树上每次对每两个点跑一个lca 在倍增的同时开一个数组a[i][j] 记录从i个点往上跑j条路里j条路中的最小值 然后每次lca的时候顺便记录一下就行了 1 #include<ios
阅读全文

浙公网安备 33010602011771号