随笔分类 -  算法-树上算法

摘要:按解决顺序排列 目录FAIDHECKJGB F 二分答案ans,放最小的前ans个bi(变成必须放完) 因为bi=2^k,所以小的放了可能会拆散大的空间,大的把小的地方占了的话小的可以塞其他地方,所以先放大的 然后暴力能放则放,最多log次指针回到开头 所以一次求解O(nlogn),总复杂度log^ 阅读全文
posted @ 2024-11-16 22:50 gmh77 阅读(31) 评论(0) 推荐(1) 编辑
摘要:题面 题解 注意a[u]是点u位置的a,不是每选一个点然后把非标记个数丢进vector里( 每选择一个点,相当于把相邻的非标记的边标为外向,最后一个点u的外向边个数就是a[u] 又观察发现每种边定向方案都可以构造(拓扑),所以一共有2^(n-1)种方案 设f[k]表示gcd=k,g[k]表示k|gc 阅读全文
posted @ 2024-11-04 00:17 gmh77 阅读(10) 评论(0) 推荐(0) 编辑
摘要:官方题解:https://blog.csdn.net/qq_62464995/article/details/127493921 # 题目大意 给出一棵边权为1的树,构造排列p,使得 ①p[1]=1 ②dis(p[i],p[i+1])=3时,一定有解,考虑构造: 把树上的点**按层黑白黑白染色**, 阅读全文
posted @ 2023-05-08 12:04 gmh77 阅读(144) 评论(0) 推荐(0) 编辑
摘要:待更 阅读全文
posted @ 2023-04-18 00:18 gmh77 阅读(13) 评论(0) 推荐(0) 编辑
摘要:一开始想给i只加一条ai的链,然后发现不太对,取中点取到非原树上的点,并且还要特判u=v 然后~~看题解~~发现加两条链就都解决了 然后变成动态直径问题: https://blog.csdn.net/weixin_62887323/article/details/128667759 大概是求出欧拉序 阅读全文
posted @ 2023-03-22 20:57 gmh77 阅读(98) 评论(0) 推荐(0) 编辑
摘要:神奇的题目 先考虑一个序列a[i]的情况(经典问题),维护数组f[i]表示以i为结尾的本质不同的序列个数 每次枚举上一位j,并且保证每种a只取最后一个出现的来转移 设g[a]表示最后一个a的对应的f的值,发现每次把f[i]=Σg[j],然后把g[a[i]]=f[i]=g[j] 实际就是每出现一个a, 阅读全文
posted @ 2023-02-21 01:12 gmh77 阅读(139) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2020-10-26 20:35 gmh77 阅读(7) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2020-10-06 21:27 gmh77 阅读(3) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2020-10-06 21:18 gmh77 阅读(2) 评论(0) 推荐(0) 编辑
摘要:题目描述 题解 知道是分块之后就不难了 把n分块,对于整块建AC自动机暴力跑,散块把全部串建AC自动机之后可以线段树查子树(因为往上查要考虑那些能查那些不能所以不好搞),也可以递归子树时用 出-入 计算 空间卡一卡可以nn,如果再把询问[L,R]前缀和一下之后也许可以做到线性 时间O 阅读全文
posted @ 2020-09-18 22:00 gmh77 阅读(103) 评论(0) 推荐(0) 编辑
摘要:题目大意 题解 首先只有能被拓扑的点才能被选,分成森林之后考虑计算 如果一个树的根仍连向未选点,那么这个根要选的话只能最后选,dp求 否则一个树没有固定的最后选的,直接算会算重,考虑对于一种方案将其唯一计算 把树提出来,把点按照拓扑序编号,每次硬点前i-1个必选,第i个必不选,这样就可以唯一算到,对 阅读全文
posted @ 2020-09-17 12:02 gmh77 阅读(144) 评论(0) 推荐(0) 编辑
摘要:题目描述 Description Input Output Sample Input 3 1 2 1 3 Sample Output 2 Explanation 只有连通块为整棵树时或只有一个点时小筄会输,其余情况小筄会赢。 Data Constraint 题解 一个连通块先手必败,当且仅当1在直径 阅读全文
posted @ 2020-01-17 07:57 gmh77 阅读(283) 评论(0) 推荐(0) 编辑
摘要:题意 给出一棵树,对于k=1\~n求最大点集S满足dis(i,j)=k或k+1(i,j∈S & i≠j) 题解 首先答案满足ans[i] =ans[i+2],因此可以维护后缀 分类讨论 ①k=1 最大点集为最大度数+1 ②k为奇数 考虑一个中心点u,那么点集S满足任意一个在S中的点到u的距离为(k 阅读全文
posted @ 2019-12-29 21:44 gmh77 阅读(280) 评论(0) 推荐(0) 编辑
摘要:题目描述 给出一个类似这样 的图,求删掉最多的黑边使得每个特殊点和至少一个节点1连通 保证上下两棵树都存在一种dfs序使得访问特殊点的顺序为1\~n 题解 设f\[i][j]表示上面的树最后一个特殊点为i,j同理的最小选取数 每次加上lca max(i,j)+1的路径,由于题目保证了dfs顺序,所以 阅读全文
posted @ 2019-11-30 09:10 gmh77 阅读(205) 评论(0) 推荐(0) 编辑
摘要:题目大意 一棵树,每个节点的权为L[i]\~R[i],一棵树的贡献为$\sum\limits_{h_{i} = h_{j}, 1 \le i include include include include define fo(a,b,c) for (a=b; a=c; a ) define add( 阅读全文
posted @ 2019-11-28 19:57 gmh77 阅读(221) 评论(0) 推荐(0) 编辑
摘要:3828 给定n个点的坐标(0f[i+1]+2,那么把i时的B删掉头尾的长度必然 f[i+1] 从后往前枚举,每次从f[i+1]+2往下枚举f[i],hash判断 阅读全文
posted @ 2019-11-08 16:59 gmh77 阅读(269) 评论(0) 推荐(0) 编辑
摘要:题目描述 Description Input 第一行两个个整数 n,k。 之后 n 1 行,第 i 行两个整数 ui, vi, 表示一条树边。 保证输入的数据构成一棵树。 Output 一行一个数表示答案。 Sample Input Sample Input1 3 2 1 2 1 3 Sample 阅读全文
posted @ 2019-11-08 08:56 gmh77 阅读(350) 评论(0) 推荐(0) 编辑
摘要:题目描述 Description 小 A 现在想用 𝑚 条彩灯去装饰家中的走廊,走廊可以视作一个 [1, 𝑛] 的区间,每一条彩灯都能覆盖一个子区间,并且有一个特定的美观程度。 然而为了降低装饰的难度,彩灯能够覆盖的区间两两之间只有包含和不相交的关系,同时为了避免光污染,他希望每个 [1, 𝑛 阅读全文
posted @ 2019-11-07 19:57 gmh77 阅读(528) 评论(0) 推荐(0) 编辑
摘要:题目描述 题解 吼题~~但题解怎么这么迷~~ 考虑一种和题解不同的做法(理解) 先把僵尸离散化,h相同的钦(ying)点一个大小 (可以发现这样每种情况只会被算正好一次) 计算完全被占领的方案,然后1 方案/概率 由于大小确定了,所以 最后会被分成若干不相连的块,且块中至少有一只僵尸,大的僵尸能占领 阅读全文
posted @ 2019-10-28 22:42 gmh77 阅读(229) 评论(0) 推荐(1) 编辑
摘要:题目描述 题解 一种~~显然~~的水法:max(0, (点权 边权之和 2)) 这样会挂是因为在中途体力值可能会更小,所以考虑求 走完每棵子树所需的至少体力值 考虑从子树往上推求出当前点的答案 设每棵子树 从根往下走 的所需体力值为f,走完的贡献为sum 由于要加上 当前点 儿子 这条边,所以实际上 阅读全文
posted @ 2019-09-22 14:20 gmh77 阅读(278) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示