点分治/边分治/启发式合并
文章平均质量分 58
Code92007
No Saturday , no Sunday , no holiday .
展开
-
hdu7458 旅行(启发式合并+树形dp)
v3往u上的mp上挂的时候,维护的是v3为子树根,存在一个点p的类型是x,p到v的路径是没用过的最大代价和,也就是③,再加上u下其他子树的dp值之和,也就是1+2,得到1+2+③。所以,mp[v][x]表示v为子树根,存在一个点p的类型是x,p到v的路径是没用过的最大代价和,用于辅助转移。于是,now[u]表示对mp[u]上所有点打的全局子树加标记,now[v]表示对mp[v]的。把v往u上挂的时候,v需要加上sum-dp[v],加上now[v],再减去now[u]原创 2024-07-28 11:47:02 · 480 阅读 · 0 评论 -
Educational Codeforces Round 132 (Rated for Div. 2) E. XOR Tree(启发式合并+贪心)
XOR(u,v) = XOR(根到u) xor XOR(根到v) xor a[lca(u,v)]修改最少的点的权值,使得树上不存在异或和为0的简单路径,输出最少的点数。自己的写法怎么写都写不对,都wa8,感觉是启发式合并公有map导致的。n(n<=2e5)个点的树,点i权值ai(1<=ai<2^30)那就是判一下某个点的子树是否存在两个点的祖先异或,等于本身的权值。这个可以启发式合并的时候,把小的集合往大的集合上挂的时候判断。假设树形是固定的,dfs往上回溯的时候,删除某个点,就可以认为是清空集合。原创 2024-03-02 03:31:11 · 424 阅读 · 0 评论 -
Codeforces Round #695 (Div. 2) E. Distinctive Roots in a Tree(思维题-树上差分)
题目n(n<=2e5)个点的树,点i有点权ai(1<=ai<=1e9)"不同根"定义为,从该点出发,到任意点的路径上都不会经历两个相同的值求图中"不同根"的个数思路来源凡神代码题解考虑到对于树上任意两个相同的值来说,这两个点之外的点,都是不合法的点,所以检查每两两个点即可,但是复杂度不符合要求画画图发现,对于每个点来说,检查离它最近的相同的值的点即可任选树根,对树进行dfs,记录dfs序,对于点u来说,如果子树v里面存在和u相同的值,则需原创 2021-07-06 11:33:48 · 143 阅读 · 0 评论 -
hdu6268 Master of Subgraph(点分治+bitset优化背包)
题目T(T<=15)组样例,每次给定n(n<=3e3)个点,并且给定一个阈值m(m<=1e5),第i个点的权值为ai(ai<=1e5),对于每个i属于[1,m],问图中是否存在连通块的权值和为i,如果存在输出1,否则输出0思路来源https://www.cnblogs.com/cxhscst2/p/8857376.html题解题解就是这么暴力,点分治甚至就是个工具因为最后答案的连通块一定必经某一个重心,所以就用点分治统计每个重心能产生出来的答案原创 2020-10-29 17:32:31 · 207 阅读 · 0 评论 -
hdu5977 Garden of Eden(点分治)
题目n(n<=5e4)个点的树,树上共有k(k<=10)种颜色,每个点一种颜色ai(1<=ai<=10),统计这样的(u,v),满足u到v的路径上的点的颜色的并集恰为k种颜色,注意(v,u)和(u,v)是不同的答案思路来源https://blog.csdn.net/albertluf/article/details/81388596题解做点分治,直接对u搜到的点统计贡献,减掉非跨过u的全部位于子树v内的贡献即可求得的答案也不用减掉自己,也不用除以2原创 2020-10-29 00:11:28 · 180 阅读 · 0 评论 -
2020 年第一届辽宁省大学生程序设计竞赛 D.开心消消乐(点分治)
题目题解wa了12发的点分治终于过了,就是xjb乱搞题……维护了六个量,(u到v的链上出现的第一种颜色col,col的次数cnt,最后一种链的颜色las,las的次数num,链的长度len,链的权值w)统计必过u的答案的时候,用任意两个合法的减去任意两个col相同的合法的,作异色答案加上col相同且长度均为1的(不抵消的)合法的,作同色不抵消,加上col相同且长度之和大于等于3的(抵消的)合法的,作同色抵消减去全在v的答案,然后点分治下去即可代码#in...原创 2020-10-28 15:32:02 · 606 阅读 · 0 评论 -
牛客练习赛61 F.苹果树(点分树+动态开点线段树)
题目思路来源https://blog.nowcoder.net/n/a1f1bf12bff446e085143093d741ec4d题解代码#pragma GCC optimize(3,"inline","Ofast")#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;typedef l..原创 2020-10-01 21:02:44 · 230 阅读 · 0 评论 -
The 2019 ACM-ICPC China Shannxi Provincial Programming Contest J.And And And(启发式合并)
题目n(n<=1e5)个点的树,是一棵点1为根的有根树,每条边有一边权w(0<=w<=1e18)简化题意,如果u<v,且树上(u,v)之间的边权异或和为0,则如果把(u,v)这条边全删掉,计此时u的连通块内的点个数为sz[u],v的连通块内的点个数为sz[v],则其对答案的贡献为sz[u]*sz[v],求总的答案,答案对1e9+7取模思路来源发现过了一年,这个题自己已经会了题解分类讨论,一条链和不是一条链的情况启发式合并,先不把lca.原创 2020-09-30 17:15:52 · 187 阅读 · 0 评论 -
2020 计蒜之道 预赛 第二场 D. 虫洞(困难)(O(n) bfs序+树上差分+树链求并+tarjan求lca)
题目简化题意,1为根的有根树点i对应一个权值wi,wi在[0,n]之间对于每个i,问在其子树中有多少种深度d,满足该深度下存在两个点a、b,使得(x是给出的值,也在[0,n]之间)对于这个i,计其答案为ans[i],要求输出对998244353取模的值思路来源官方题解题解O(nlogn)的做法由于写的比较搓,怎么写怎么T,最后无奈写O(n)bfs的过程中,一边bfs一边尺取,tong[x]维护值为x时当前出现的最大的bfs序下标,能更新当且仅当v所需要的t原创 2020-09-24 15:57:32 · 695 阅读 · 0 评论 -
2019 ICPC Asia Nanchang Regional K.Tree(启发式合并+动态开点线段树)
题目n(n<=1e5)个点的树,给定一个参数k(k<=1e5),代表两点距离上限点i上有一个权值询问树上有序对(x,y)的数量,满足以下条件:①x不等于y②x不是y的祖先③y不是x的祖先④x和y的距离不超过k,即⑤思路来源https://blog.csdn.net/qq_43202683/article/details/104108315题解启发式合并,然后考虑枚举到轻儿子的时候,答案如何统计,轻儿子统计的应该是重儿子子树或者已经被插入的轻儿子原创 2020-07-07 21:32:54 · 1114 阅读 · 0 评论 -
Codeforces Round #383 (Div. 1) D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(启发式合并)
题目n(n<=5e5)个点的以1为根的有根树,每条边上有一个'a'到'v'的字母(即字母种数=22)称一条路径(u,v)是合法的,当且仅当这条路径上的字母,能经过重排形成回文串对于每个点u,求u的子树内最长的合法路径思路来源https://www.luogu.com.cn/blog/Soulist/solution-cf741d题解考虑重排构成回文串,当且仅当其字符数量均为偶数或者恰好有一个奇数,用01表示其奇偶性,对于22种字符,先按位状压成[0,(1<<原创 2020-07-01 16:28:44 · 2240 阅读 · 0 评论 -
洛谷P3806 【模板】点分治1(点分治 模板题)
题目给定一棵有n(n<=1e4)个点的树询问树上距离为k(k<=1e7)的点对是否存在询问m(m<=100)组思路来源https://www.cnblogs.com/bztMinamoto/p/9489473.htmlhttps://baijiahao.baidu.com/s?id=1608747083240620752&wfr=spider&am...原创 2019-10-10 21:40:48 · 362 阅读 · 0 评论