08 2018 档案
摘要:description 权限题。 树上$n$个节点每个节点都有一种物品,每种物品有其价值,价格,数量,只能买一个连通块中的物品,求$m$元能买到物品价值的最大值。 data range $$ n\le 500,m\le 4000,T\le 5,c_i\le m$$ solution 紧跟$YCB$聚
阅读全文
摘要:description "题面" data range $$ 0\le m include include include include include include include include include include include include include include
阅读全文
摘要:description "题面" data range $$ n\le 200000,m,k\le 400000$$ solution $Kruskal$重构树 甚至比 "[ONTAK2010]Peaks加强版" 还要容易码 不再多说 code 为什么我写了个叫$Dij$的函数,一开始写的却是$SP
阅读全文
摘要:description "题面" data range $$ n\le 100000,m,k\le500000$$ solution $Kruskal$重构树可以十分便捷的求出从一个点出发,只能经过边权不超过$v$的点所能到达的点集 重构树的构建通过并查集连边时实现 在$Krusakl$重构树中,从
阅读全文
摘要:description "题面" data range $$ 1 \leq T \leq 10, 1 \leq n, m \leq 200 , 0 \leq k \leq \min(nm, 300)$$ solution 矩阵树定理 求无向图的生成树个数 度数矩阵 邻接矩阵 去掉一行一列求行列式 为
阅读全文
摘要:description "题面" data range $$n, q,\sum k\le 10^5$$ solution 还是虚树的练手题 $f[0/1][u]$表示$u$的子树内,$u$是否和重要城市连通的最小分割代价 分类讨论有点捉急 code cpp include include inclu
阅读全文
摘要:description "题面" data range $$n\le 10^6, q\le 5\times 10^4,\sum k\le 2\times n$$ solution 还是虚树的题 这道题就相对比较容易了 直接建出虚树,考虑每条边对答案的贡献,再在树上做一个最长链和最短链就可以了 之前似
阅读全文
摘要:description "题面" data range $$n\le 300000, q\le 300000,\sum m\le 300000$$ solution 仍然是虚树的题 听说许多大佬把这道题当做模板??? 感觉还是挺神的 考虑只有一次询问我们如何做这个$dp$ 先自底向上$dp$找到子树
阅读全文
摘要:description "题面" data range $$n\le 250000,\sum k\le 500000$$ solution 所谓虚树,应该是一种复杂度为$O(节点数)$且能表示出所有询问节点的祖先关系的数据结构。 是一个比较灵活的东西 询问节点两两的$lca$就是$dfn$序中相邻两
阅读全文
摘要:description "题面" 给个树,第$i$个点有两个权值$a_i$和$b_i$,现在求一条长度为$m$的路径,使得$\frac{\sum a_i}{\sum b_i}$最小 data range $$m\le n\le 2\times 10^5$$ solution 0/1分数规划?二分吧。
阅读全文
摘要:update 9.20:本篇题解已经被$yyb$证明是出锅的 这道题目最后的式子看上去是很简单的,不到10行就码完了,但是求式子的过程并没有那么简单。 很容易想到一种枚举思路: 因为每一段连续的1都有一个结束位置,我们从左到右枚举这个结束位置, 再枚举在这个位置结束的连续的1的长度,最后把贡献加入答
阅读全文
摘要:description [题面][1] solution 一开始的思路是插头$DP$,然而复杂度太高 考虑将网格图黑白染色后跑费用流 流量为接口数,费用为操作次数 把一个方格拆成五个点,如何连边请自行脑补 打个表感觉还是挺好写的 code cpp include include include in
阅读全文
摘要:description [题面][1] 给定一棵$n$个节点的树,求出不同三元组$(x,y,z)$的个数, 其中$dist(x,y)=dist(y,z)=dist(x,z)$。 solution 考虑暴力。 设$f[i][j]$表示$i$的子树中深度为$j$的点数, $g[i][j]$表示$i$子树
阅读全文
摘要:description [题面][1] 给定树,支持将树上与节点$x$距离不超过$d$的节点的点权均加上$w$,单点询问点权。 solution 动态点分治第四题。 同时第一次写线段树动态开点和标记永久化。。。 ~~然后发现其实还挺简单的~~ code cpp include include inc
阅读全文
摘要:description [题面][1] solution 动态点分治第三题。 动态维护与某点距离$\le k$的所有点的点权和. 对于每一个节点开两棵线段树:一棵维护以距离为下标的点权和, 一棵维护对父亲的贡献。 没写过线段树动态开点... 于是就改成了树状数组... 弱 code cpp incl
阅读全文
摘要:description [题面][1] solution 动态点分治第二题。 动态维护带权重心和动态查询$\sum_i dist(u,i)$。 查询开一堆数组在点分树上修改就行。 找带权重心的时候从根节点开始找 每次判断的时候点分树暴力往孩子跳求答案 需要注意的是: 在点分树上往重心所在的子树跳的时
阅读全文
摘要:description [题面][1] solution 动态点分治第一题。 本来是想写 来着 动态维护最远点对 考虑每次暴力点分治的过程,相当于对于所有过重心的路径判一个最大值 于是我们在动态点分治的时候,对于每一个节点开一个堆,修改的时候往父亲维护即可 重写了至少3遍 果然我还是太弱了导致全方位
阅读全文

浙公网安备 33010602011771号