- 博客(13)
- 收藏
- 关注
原创 T725365 【2026寒假集训】最短路
接下来 m 行,每行两个整数 ai,bi,表示一条无向边连接 ai 与 bi。首先先把1号点加入队列中,并且记录此时的步数是0(这需要个结构体)请你计算从 1 号点到 n 号点的最短路长度(经过的边数)。输出一个整数,表示从 1 到 n 的最短路长度。第一行两个整数 n,m,表示点数与边数。4.遍历他的所有链接点并且判断他走没走过。给定一个包含 n 个点、m 条边的。这题是个典型的bfs找最短路问题。5.把他的所有链接点加入队列。每条边的长度均为 1。
2026-04-26 15:51:04
20
原创 P3379 【模板】最近公共祖先(LCA)
然后提到同一深度后,在用同样的方法往上找,每次查询并且判断f[u][i]是否等于f[v][i],如果等,就说明查多了(LCA在这个点的下面)那就继续少查一点,如果不等于,说明查少了,那就把u=f[u][i];这题如果要过,不能用纯暴力往上跳,要用log2N的寻找方法:首先在dfs先把每个点的深度确定好,然后开个数组f[u][i],代表u这个点往上的第2^i的点是f[u][i]。对于 100% 的数据,1≤N,M≤5×105,1≤x,y,a,b≤N,对于 70% 的数据,N≤10000,M≤10000。
2026-04-12 15:33:37
49
原创 P3478 [POI 2008] STA-Station
所以先以1为根遍历一遍树,dp[num]代表以num为根的最大深度和,sz[num]代表了以num为根的子树的有多少个节点。所以先用1为根的树初始化dp,初始化的dp代表了以num为子树的最大深度和,并不是我们的最终目标。如果要转化成以num为根的整个树的最大深度和,那就是dp[num]=dp[num]-sz[儿子]+n-sz[儿子];这个式子代表了转化的时候,以num为根的所有结点都减去1个深度,其他的都加1个深度。给定一个 n 个点的树,请求出一个结点,使得以这个结点为根时,所有结点的深度之和最大。
2026-03-30 14:42:59
41
原创 P2016 [SEERC 2000] 战略游戏
第二行至第 n+1 行,每行描述每个结点信息,依次为:一个整数 i,代表该结点标号,一个自然数 k,代表后面有 k 条无向边与结点 i 相连。一开始我可能理解错题目了,所以写了个错误的dp,但是我感觉如果换一个题目换一个要求我这个dp也是合理的,只是不符合这题而已。dp[num][0/1]代表了到num这个数字的,选择(1)或不选择(0)的时候,他的最少放置士兵数量(前提是符合题目要求)。对于一个 n 个结点的树,结点标号在 0 到 n−1 之间,在输入数据中每条边只出现一次。
2026-03-26 20:08:06
169
原创 P1122 最大子树和
每朵花都有一个“美丽指数”,该数越大说明这朵花越漂亮,也有“美丽指数”为负数的,说明这朵花看着都让人恶心。老师的任务就是:通过一系列“修剪”(也可以什么“修剪”都不进行),使剩下的那株(那朵)花卉上所有花朵的“美丽指数”之和最大。想一下这题思路,先遍历到叶子结点,在return的时候判断要不要断掉此时数字和上一个数字连接的键,如果断掉:dp[num]=此时这个数字对应的美丽指数,如果不断:dp[num]=dp[儿子]+dp[num]一个数,表示一系列“修剪”之后所能得到的“美丽指数”之和的最大值。
2026-03-25 17:06:57
212
原创 P1352 没有上司的舞会
现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数 ri,但是呢,如果某个职员的直接上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。然后就是重点——树形dp:当到达这个结点时,可以选择他或者不选,所以dp数组定义为dp[num][0/1].(0代表不选,1代表选)。第 2 到第 (n+1) 行,每行一个整数,第 (i+1) 行的整数表示 i 号职员的快乐指数 ri。2.dp[num][1]=r[num]+求和(max(dp[儿子][0],dp[儿子][1]));
2026-03-25 15:58:18
51
原创 P14919 [GESP202512 六级] 路径覆盖
dp[num]代表以num为根结点的子树能符合题目要求的最小染色代价,所以思考一下dp转移:以上图举例子,这里已2,4,5这个子树举例子——首先先遍历到了4这个子树,因为只有一个数字,所以为了符合题目要求就只需要把4染色,所以dp[4]=c[4]. 然后下一个是5,同理dp[5]=c[5]. 遍历完了这些,接下来就return了。所以就这个例子来看,dp[2]=min(dp[2],dp[4]+dp[5])(这里dp[2]也可以是c[2],因为我之前把每个dp赋值了c)第一行,一个正整数 n,表示结点数量。
2026-03-24 13:48:28
183
原创 P15801 [GESP202603 六级] 完全二叉树
dfs先从根结点的左右一直遍历到叶子结点的左右结点,并且在return的时候记录此时这个结点的层数,然后用上面的判断左右去给定此时这个结点为根的二叉树是满,还是完全,还是啥也不是。要判断一个结点为根的二叉树是不是完全二叉树,就要看他的左结点为根的二叉树和右结点为根的二叉树。1. 左边是个满二叉树,右边是个满二叉树,层数相同,所以此时这个结点为根的二叉树是满二叉树,也是完全二叉树。2.左边是个满二叉树,右边是个完全二叉树,层数相同,所以此时他就是个完全二叉树,但不是满二叉树。,n 编号,根结点编号为 1。
2026-03-24 13:28:51
174
原创 【寒假集训】20262.22
如果通过在数组中遍历比较每一个位置的花费,那将会超时,所以可以通过先把数学公式列出来,那么在i位置的花费总和为:x*(ai-a1)+x*(ai-a2)+...+x*(ai-ai)+y*(ai+1-ai)+...+y*(an-ai). 所以可以把他们拆解出来, 最后得出了花费为x*i*ai-x*si(si为数组中到i位置的前缀和,后面的sn同理)+y(sn-si)-y*(n-i)*ai. 所以通过这个公式,我们把原来的求和从O(N)到了O(1). 大大节省时间复杂度。两个人的选择可以不同。
2026-02-22 21:04:02
628
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅