自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 P14362 [CSP-S 2025] 道路修复【题解】

题目摘要 P14362 [CSP-S 2025] 道路修复 / road(民间数据)题目要求计算在修复部分道路和选择性地进行乡镇城市化改造后,使得原有n座城市保持连通的最小费用。原有m条双向道路可以修复,k个乡镇可以选择改造,改造后能与城市建立新道路。需要枚举乡镇改造方案组合(共2^k种),对每个方案计算最小生成树费用,并取最小值作为答案。 关键算法思路 预处理原图的最小生成树,仅保留n-1条关键城市边 枚举所有乡镇改造方案(二进制位表示选择状态) 对每个方案重新计算最小生成树: 包含被选中乡镇的所有城乡边

2025-11-05 11:42:23 897

原创 P14361 [CSP-S 2025] 社团招新【题解】

题目要求将n个新成员分配到三个部门,使得每个部门人数不超过n/2,同时最大化满意度总和。通过贪心算法,首先将每个成员分配到满意度最高的部门,如果某个部门人数超过限制,则优先调走负贡献最小的成员到次优部门。使用优先队列维护各部门的最小负贡献,确保调剂操作对总满意度影响最小。最终输出满足条件的最优满意度总和。

2025-11-05 11:30:28 1027

原创 P12954 [GCJ Farewell Round #2] Railroad Maintenance【题解】

该题目要求计算铁路网络中的关键线路数量,其中关键线路是指移除后会导致至少一对车站无法互通的铁路线。通过将每条铁路线视为一个超级节点,并与沿线车站建立双向边,将问题转化为判断这些超级节点是否为图中的割点(即移除后是否使图不连通)。使用Tarjan算法高效地求解割点,从而统计关键线路数量。最终解法的时间复杂度适用于大规模数据,有效解决了该图的连通性问题。

2025-10-19 16:21:23 431

原创 P3155 [CQOI2009] 叶子的染色【题解】

题目摘要 题目P3155 [CQOI2009] 叶子的染色要求对一棵m个节点的无根树进行节点染色(黑/白),选择度大于1的节点作为根,确保每个叶子到根的路径上至少有一个有色节点。对于每个叶子u,定义c_u为路径上最后一个有色节点的颜色,要求根据给定的c_u值设计着色方案,使着色节点数最少。 方法解析 采用动态规划方法: 定义dp[u][0]和dp[u][1]表示节点u染黑/白时的最小操作数 初始状态:叶子节点只能染指定颜色(代价1),非叶子节点初始代价1 转移方程考虑子节点与父节点颜色相同可节省操作 最终结

2025-10-15 19:37:40 803

原创 P1040 [NOIP 2003 提高组] 加分二叉树【题解】

这篇文章解析了一道关于构建加分二叉树的动态规划问题。题目要求根据中序遍历序列构建加分最高的二叉树,并输出最高加分和前序遍历结果。作者将其视为区间DP问题,通过定义状态dp[i][j]表示区间[i,j]构建树的最大分数,并枚举根节点位置进行转移。同时使用root数组记录最优解对应的根节点位置,最后递归输出前序遍历。文章详细解释了状态转移方程和边界条件处理,并附有完整的C++代码实现。整体思路清晰,适合理解区间DP在树形结构问题中的应用。

2025-10-13 21:39:50 940

原创 P2014 [CTSC1997] 选课【题解】

本文解析了CTSC1997选课问题,将课程选择建模为树形动态规划。题目要求从N门有先修关系的课程中选择M门获得最大学分,通过构建以0为根节点的树结构,定义状态dp[u][j]表示以u为根选j门课的最大学分。使用DFS后序遍历处理子树,并采用分组背包思想进行状态转移,最终输出dp[0][M+1](包含虚拟根节点)。该解法时间复杂度约为O(NM²),适用于N,M≤300的数据规模。

2025-10-13 16:07:49 1180

原创 P1775 石子合并(弱化版)及 P1880 [NOI1995] 石子合并 【题解】

本文介绍了石子合并问题的两种动态规划解法。P1775问题使用区间DP策略,将线性排列的石子堆合并为一堆,通过状态转移方程计算最小代价。P1880问题则扩展为环形排列,通过拆环为链的方法,同时计算最小和最大合并代价。两个问题都利用前缀和优化区间和计算,时间复杂度为O(n^3)。代码实现展示了如何通过动态规划高效解决这类合并优化问题。

2025-10-12 15:09:37 645

原创 P2536 [AHOI2005] 病毒检测

摘要 本文解析了P2536 [AHOI2005]病毒检测问题,要求判断DNA片段是否与病毒模板匹配。模板包含通配符*(匹配任意多个字符)和?(匹配单个字符)。解决方案采用Trie树存储DNA片段,并通过深度优先搜索(DFS)在Trie树上匹配病毒模板。关键点包括处理通配符的多种匹配方式、记忆化搜索优化以及统计非病毒片段数量。最终输出不匹配的DNA片段数目,时间复杂度通过状态记忆化得到优化。

2025-09-30 21:52:19 645

原创 P1133 教主的花园【题解】

摘要 本文解决了一个环形花园种植树的动态规划问题。教主需要在环形花园种n棵树,每棵树有3种高度选择(10,20,30),且相邻树的高度必须满足比两邻树都高或都低。目标是最大化观赏价值总和。 解题思路: 使用三维动态规划数组dp[i][j][k]记录第i棵树选择j高度时(k表示与左邻树的关系)的最大价值 状态转移考虑不同高度间的约束关系 由于花园是环形的,需要枚举第一棵树的高度来确保首尾约束 最终方案时间复杂度为O(n),适用于n≤10^5的大数据规模 样例输入输出展示了如何计算4棵树时的最优解,输出结果为1

2025-09-02 16:54:54 1049 1

原创 P6492 [COCI 2010/2011 #6] STEP【题解】

本题要求维护一个字符序列,支持单点修改,并在每次修改后查询最长相邻字符不同的连续子串长度。可以使用线段树来高效处理,每个节点记录区间端点值、左右延伸长度和整体最大长度。通过合并子节点信息来更新父节点信息,最终在O(q log n)时间内解决问题。

2025-08-21 09:20:25 802

原创 P1471 方差【题解】

题目摘要 题目P1471方差要求维护一个实数数列,支持三种操作: 区间加一个实数 查询区间平均数 查询区间方差 使用线段树维护区间和与区间平方和。方差计算通过公式s²=(平方和)/n-(平均数)²实现。线段树通过懒标记优化区间更新操作,确保时间复杂度为O(logN)。 输入包含N个数和M个操作,输出各查询结果并保留4位小数。数据规模N,M可达1e5,需要高效算法处理。 样例展示了基本操作流程,包括区间加、平均数和方差计算,验证了算法的正确性。

2025-08-16 18:19:34 853

原创 P2034 选择数字/P2627 [USACO11OPEN] Mowing the Lawn G【题解】

摘要 本文解析了P2034选择数字问题的动态规划解法。题目要求在n个非负整数中选择若干数,使得连续选择的数不超过k个,且和最大。作者首先分析暴力解法不可行,转而采用动态规划方法,定义f[i][0]和f[i][1]分别表示不选/选第i个数时的最大和。通过优化状态转移方程,利用单调队列维护区间最值,将时间复杂度从O(n²)降为O(n)。最终代码实现了这一思路,通过前缀和与单调队列高效求解问题。

2025-08-15 16:19:59 990

原创 P1886 滑动窗口 /【模板】单调队列【题解】

摘要 本文介绍了滑动窗口问题的单调队列解法。题目要求在一个长度为n的序列中,找出所有大小为k的滑动窗口的最小值和最大值。由于暴力解法时间复杂度为O(n^2)无法通过,采用单调队列优化。维护两个双端队列,分别处理最小值和最大值:对于最小值,保持队列单调递增;对于最大值,保持队列单调递减。每次窗口滑动时,移除超出范围的元素,并确保队列单调性。最终每个窗口的最值即为队首元素。该算法时间复杂度为O(n),适用于大规模数据。文章提供了C++实现代码,使用STL的deque容器,并解释了关键操作步骤。

2025-08-13 16:31:31 770

原创 P4180 [BJWC2010] 严格次小生成树【题解】

摘要 本文介绍了求解严格次小生成树的算法。严格次小生成树是指边权和严格大于最小生成树但小于其他所有生成树的生成树。关键结论是:严格次小生成树与最小生成树仅相差一条边。算法步骤如下:1) 用Kruskal算法求出最小生成树;2) 对每个不在最小生成树中的边,计算将其加入后形成的环中的最大边(若与新边权值相同则取次大边);3) 通过替换操作得到新的生成树,取其中边权和最小的即为解。采用树上倍增方法优化查询过程,时间复杂度为O(nlogn+mlogn)。

2025-08-12 10:36:38 686

原创 P1967 [NOIP 2013 提高组] 货车运输【题解】

《货车运输问题解析》摘要: 本题是NOIP2013提高组题目,要求解决货车在有限重道路网络中寻找最大载重路径的问题。通过分析得出,关键在于构建最大生成树并使用LCA算法高效查询两点间路径的最小边权。文章详细阐述了为何Kruskal算法适合构建最大生成树,以及如何利用倍增法实现LCA查询。最终解决方案的时间复杂度为O(nlogn),能够处理大规模数据。文中还提供了完整的C++代码实现,并强调了算法理解的重要性,建议读者在掌握Kruskal和LCA算法后再尝试此题。

2025-08-11 14:35:02 1111

原创 P1119 灾后重建【题解】

这道题目描述了一个灾后重建的情境,需要计算在不同时间点村庄之间的最短路径。摘要如下: 题目给出了N个村庄和M条双向公路,每个村庄有重建完成时间ti。只有在某天t重建完成的村庄之间的公路才能通车。对于Q个按时间不降序排列的询问(x,y,t),需要输出在t天时x到y的最短路径长度,若x或y未重建或无法到达则输出-1。 解析指出可以利用Floyd算法,由于村庄按重建时间排序且查询时间不降,可以逐步添加重建完成的村庄作为中间点来更新最短路。代码实现中初始化距离矩阵后,对每个查询处理时,动态添加新重建的村庄并更新最短

2025-08-08 19:43:48 650

原创 P4085 [USACO17DEC] Haybale Feast G【题解】

本文提出了一种使用二分法解决USACO17DEC Haybale Feast G问题的简单方法。题目要求找到满足风味总和≥M的连续区间中,辣度最大值的最小值。通过分析发现,随着允许的最大辣度增加,可食用干草捆增多,总风味也增加,具有单调性。 解法采用二分法,初始辣度区间设为[1,最大辣度值],每次取中间值验证在此辣度限制下是否能获得足够风味。验证时遍历所有干草捆,遇到超过当前辣度限制的则重置累计风味值,否则累加风味值直到满足要求。时间复杂度为O(n log(maxS)),能高效处理题目给定的数据规模。

2025-08-07 15:12:42 743

原创 P3379 【模板】最近公共祖先(LCA)【题解】(重链剖分法)

LCA的重链剖分求法

2025-03-28 16:38:42 564

原创 P3379 【模板】最近公共祖先(LCA)【题解】(倍增法)

本文讲解用倍增法求LCA。

2025-03-15 11:24:45 997

原创 P4391 [BalticOI 2009] Radio Transmission 无线传输【题解】

KMP的一个重要结论

2025-03-13 16:58:22 976

原创 P5836 [USACO19DEC] Milk Visits S【题解】

并查集题(有点像LCA的题)

2025-03-11 16:37:18 799

原创 P3384 【模板】重链剖分/树链剖分

重链剖分解析

2025-03-08 16:05:21 795

原创 CF1363C Game On Leaves【题解】

An ordinary key to a problem

2025-03-04 19:47:21 637

原创 P3398 仓鼠找 sugar【题解】

这是LCA的一个应用

2025-03-01 23:30:38 702

原创 P3379 【模板】最近公共祖先(LCA)【题解】(Tarjan法)

LCA

2025-03-01 15:05:06 777

原创 B4016 树的直径【题解】

讲述树的直径DP求法

2025-02-24 16:42:06 1064

原创 P3373 【模板】线段树 2【题解】

题解

2025-02-11 16:19:49 891

原创 P1253 扶苏的问题

线段树

2025-02-11 15:29:39 852

原创 P5057 [CQOI2006] 简单题【题解】

有一个n个元素的数组,每个元素初始均为0。有m0110例如当n20时,10。

2025-02-11 14:03:56 847

原创 P3372 【模板】线段树 1【题解2】

本题题解分两篇,此篇为第2篇,用树状数组做。

2025-02-09 22:12:34 922

原创 P3372 【模板】线段树 1【题解1】

此篇为第1篇,用线段树做,并讲解线段树相关知识

2025-02-09 20:42:06 847

原创 C1537. 「一本通 4.1 例 3」校门外的树【题解】

C1537的题解

2025-02-09 18:46:28 1071

原创 P3368 【模板】树状数组 2【题解】

本文以P3368为例讲解树状数组在区间修改+单点查询中的运用

2025-02-08 09:44:09 1335

原创 P3374 【模板】树状数组 1【题解】

本文以P3374为例讲解树状数组。

2025-02-07 21:22:54 813

原创 B1006. 正负数(文件I/O)【题解】

……

2025-02-07 14:14:14 356

原创 最短路算法简括

当把2的最短路确定后,把2-4,2-3,存入堆,那么此时堆顶为4的路为15,于是就把4的最短路确定为15了。因为dijkstra算法选的都是当前看来最短的路相连的,如果边权都为非负,那么通过其他点回到出发点的长度一定会大于等于先前的。我们知道了在下一轮只用这一轮松弛成功的点进行松弛,就可以把这一轮松弛成功的点放进队列里,下一轮只用从队列里取出的点进行松弛。因为没有负环的图的上的点最多被除它以外的所有点入队一次,而有负环的图上会个点会无限次被入队,由此可判断负环。点数,那么图上存在负环,也就不存在最短路了。

2025-02-07 12:46:00 499

原创 P1311/P6032/C1546 选择客栈 (加强版)【题解】

sumsumiijnumsumj−sumi−1num0ijlonglong②ST表做法:因为题目本质是求区间最小值,只要区间最小值小于等于p了,该区间就是合法的。基本思路如①做法longlong注意:此解法虽然在中可以AC,但在中会喜提80ptsMLE),且其时间复杂度最坏可达On2,并不佳,代码写起来也冗杂,不建议使用。

2025-02-07 12:20:21 954

原创 P3865 【模板】ST 表 && RMQ 问题 题解

这是一道 ST 表经典题——静态区间最大值O1函数返回值为读入的第一个整数。

2025-02-06 13:19:45 982

原创 C1518. 「一本通 3.5 练习 4」抢掠计划/P3627 [APIO2009] 抢掠计划 题解

所以块中的所有点可以视为一个点,点权为块中的所有点之和。而在本题中路可以重复走,说明只要在块中,无论你怎么走到哪,你都可以到块中的任意点,于是块中有98你就能到,块中点的出路你也能出。强连通分量缩点原理:任意一个强连通分量里,所有点是可以互相到达的,那么当其中一个点被到达就意味着块中所有点都会被到达。题意分析:给定起点和合法终点,以及每个点的点权,问最大点权和是多少。基本思路:缩点后跑最长路(当然也可以DP(只不过我不会))

2025-01-23 09:49:31 168

原创 C1513. 「一本通 3.5 例 1」受欢迎的牛 & P2341 [USACO03FALL / HAOI2006] 受欢迎的牛 G 题解

我们思考一下发现如果有且仅有一个强连通分量,它的出度为0,那么它就是“明星团”,里面全是明星,因为没有其它连通分量来传出它们的爱意,于是它承担了所有爱意。那为啥只能仅有一个呢?因为如果有两个及以上的话,一个出度为0的分量无法将它其中的爱传递到另几个,于是,这些分量的爱都不全了。原问题就变成了有几个点可以从所有除本点外的点到达。而其中的双连通分量就代表了这里的牛相互爱慕,一头牛被爱慕,分量里的牛就都被爱了。抽象成所有点都能到达的点有几个。(牛抽象成点,A爱B抽象成A到B的一条有向边)

2025-01-22 11:28:57 304

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除