- 博客(823)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注

原创 【NOIP普及组 复赛/CSP-J 第二轮真题】题解目录
1963 【13NOIP普及组】小朋友的数字:[点击这里]1940 【07NOIP普及组】守望者的逃离:[点击这里]1964 【13NOIP普及组】车站分级:[点击这里]1960 【12NOIP普及组】文化之旅:[点击这里]1951 【10NOIP普及组】导弹拦截:[点击这里]1952 【10NOIP普及组】三国游戏:[点击这里]1948 【09NOIP普及组】道路游戏:[点击这里]
2025-04-09 16:54:39
1138

原创 【CSP认证 第一轮 初赛】部分题解目录
CSP-J 2021 第一轮 题解][CSP-J 2020 第一轮 题解][CSP-J 2019 第一轮 题解]
2024-11-01 23:17:24
470

原创 【OpenJudge NOI】题解目录
【OpenJudge NOI】题解目录OJ链接:OpenJudge NOI以下为本人做的OJ题解针对每一道题我都会给出题目考点、解题思路、题解代码。必要时也会给出不同的解题方法。本人水平有限,如有不足之处,欢迎大家指正。如看过后还有不明白的地方,欢迎在评论区留言。作者:君义_noip1.1编程基础之输入输1 Hello, World!:点击这里2 输出第二个整数:点击这里3 对齐输出:点击这里4 输出保留3位小数的浮点数:点击这里5 输出保留12位小数的浮点数:点击这里6 空格分隔输
2021-01-16 15:57:24
64630
20

原创 【信息学奥赛一本通】题解目录
【信息学奥赛一本通】题解目录信息学奥赛一本通OJ以下本人做的OJ题解针对每一道题我都会给出题目考点、解题思路、题解代码。必要时也会给出不同的解题方法。本人水平有限,如有不足之处,欢迎大家指正。如看过后还有不明白的地方,欢迎在评论区留言。作者:君义_noip基础(一) C++语言第一章 C++语言入门1001 Hello,World!:点击这里1002 输出第二个整数:点击这里1003 对齐输出:点击这里1004 字符三角形:点击这里1005 地球人口承载力估计:点击这里第二章 顺序
2021-01-12 03:35:08
187325
56
原创 信息学奥赛一本通 1551:维护序列
摘要 本文介绍了线段树在解决区间修改和查询问题中的应用。以题目"ybt 1551:维护序列"为例,展示了线段树如何高效处理区间乘法、加法操作以及区间和的查询。文章提供了详细的线段树实现代码,包括建树、标记下传、区间更新和查询等核心操作。该解法与洛谷P3373线段树模板类似,通过维护加法标记和乘法标记来实现复杂的区间操作,确保每次操作的时间复杂度为O(log n)。代码使用C++实现,适用于需要快速处理大规模区间操作的应用场景。
2025-05-29 21:02:25
265
原创 洛谷 P3373 【模板】线段树 2
摘要:本题解介绍了线段树模板题P3373的解法,重点处理区间乘法和加法操作。通过设计两个延迟标记tagMul和tagAdd,记录多次区间修改的累积效果。标记下传时先乘后加,确保计算顺序正确。线段树每个结点初始tagMul设为1,处理乘法时同步更新tagAdd,保持公式val = tagMulval + tagAdd(r-l+1)的正确性。操作过程及结果均对m取模,防止溢出。
2025-05-28 11:28:52
943
原创 信息学奥赛一本通 1548:【例 2】A Simple Problem with Integers
本题是一道区间修改与区间查询的模板题,可以使用线段树或树状数组两种数据结构解决。线段树通过递归构建二叉树结构,每个节点存储区间信息,支持区间修改与查询操作;树状数组则通过维护两个数组分别存储差分值及其乘积来实现高效区间操作。两种方法都能在O(logn)时间内完成每次操作,适合处理大规模数据。具体实现上,线段树通过标记传递处理区间修改,而树状数组巧妙利用差分数组的性质进行区间更新。两种解法均给出了完整代码实现,可根据需求选择合适的方法。
2025-05-27 22:22:47
132
原创 洛谷 P3372 【模板】线段树 1
本文介绍了使用线段树解决区间修改和区间查询问题的思路。重点讲解了线段树中的延迟标记(Lazy Tag)机制,通过标记下传(pushDown)和标记更新(addTag)来提高效率。文章提供了详细的代码实现,包括建树、区间修改和查询操作,并强调了long long类型处理大数据范围的必要性。树状数组解法作为补充也简要提及。该解法时间复杂度为O(log n),适合处理大规模数据。核心在于延迟标记的巧妙应用,既保证了正确性又优化了性能。
2025-05-27 21:03:44
1012
原创 信息学奥赛一本通 1547:【 例 1】区间和
本题给出了两种解法来维护区间和并实现单点修改与区间查询操作。解法1使用线段树,通过递归构建树结构实现区间查询与更新;解法2采用树状数组,利用lowbit运算高效完成单点修改和前驱查询。两种方法均可有效解决问题,线段树代码更直观但实现略复杂,树状数组代码简洁且效率较高。核心思路都是通过预处理数据结构来优化区间操作的时间复杂度。
2025-05-26 22:20:57
332
原创 洛谷 P3374 【模板】树状数组 1(线段树解法)
本文介绍了线段树的基本概念、性质及其在解决单点修改和区间查询问题中的应用。线段树是一种基于分治思想的平衡二叉树结构,能够高效处理区间信息。文章详细阐述了线段树的构建、单点修改(时间复杂度O(logn))和区间查询(时间复杂度O(logn))的实现原理,并给出了对应的C++代码实现。通过洛谷P3374题目的具体应用,展示了如何利用线段树解决实际问题。
2025-05-26 22:08:19
926
原创 信息学奥赛一本通 1853:【08NOIP提高组】传纸条 | 洛谷 P1006 [NOIP 2008 提高组] 传纸条
该题目是一个典型的动态规划问题,要求在m×n的网格中,从(1,1)到(m,n)的两条不相交路径,使得路径上经过的格子的数值之和最大。通过状态定义和状态转移方程,可以将问题转化为四维动态规划问题。状态定义为$dp_{i,j,k,l}$,表示第一趟从(1,1)走到(i,j),第二趟从(1,1)走到(k,l)的路径上数值之和的最大值。状态转移方程考虑了四种可能的移动方式,并确保两条路径不相交。最终结果为$dp_{m,n,m,n}$,即两条路径都到达(m,n)时的最大数值和。代码实现中,通过遍历所有可能的路径组合,
2025-05-21 21:09:20
674
原创 信息学奥赛一本通 1537:【例 3】校门外的树
题目要求处理两种操作:1)在区间[L, R]内种一种树,每次种类不同;2)查询区间[x, y]内有多少种树。通过树状数组实现,分别记录区间左端点和右端点的数量。对于查询操作,利用前缀和计算包含[x, y]的区间数量,公式为sumL(y) - sumR(x-1),其中sumL和sumR分别表示左端点和右端点的前缀和。代码提供了两种实现方式,分别使用两套树状数组函数和将数组作为参数传入函数。
2025-05-20 11:44:06
694
原创 信息学奥赛一本通 1539:简单题 | 洛谷 P5057 [CQOI2006] 简单题
该题目涉及对01数组的区间修改和单点查询操作。主要解法有两种:树状数组和线段树。 解法1:树状数组 通过维护两个树状数组treeL和treeR,分别记录区间左端点和右端点的修改次数。每次区间修改时,更新treeL和treeR;查询时,通过计算sumL(x) - sumR(x-1)得到该位置被修改的次数,奇数次为1,偶数次为0。 解法2:线段树 使用线段树维护区间的异或值。每次区间修改时,对区间内的元素进行异或操作,并标记需要下传的标记。查询时,通过标记下传得到该位置的实际值。 两种解法均能高效处理区间修改和
2025-05-19 22:37:00
788
1
原创 信息学奥赛一本通 1535:【例 1】数列操作
本题为树状数组模板题,要求维护区间和,进行单点修改和区间查询。通过树状数组的基本操作,如update和sum,能够高效地完成这些任务。代码中首先初始化树状数组,然后根据输入的操作类型,执行相应的修改或查询操作。具体实现包括对数组元素的单点更新和区间求和的查询。通过这种方式,可以快速处理动态数组的修改和查询需求。
2025-05-14 00:10:20
401
原创 洛谷 P3374 【模板】树状数组 1(树状数组解法)
树状数组是一种高效的数据结构,用于维护序列的区间和,支持单点修改和区间查询操作,时间复杂度均为$O(\log n)$。其核心思想是通过lowbit函数确定每个节点的管辖范围,并通过递推关系快速更新和查询。在实现中,update函数用于单点修改,通过逐级更新父节点来维护区间和;sum函数用于查询前$i$项的和,通过逐级累加子节点的值得到结果。区间查询则通过两次sum调用相减实现。树状数组适用于需要频繁进行单点修改和区间查询的场景,如动态维护序列的区间和。
2025-05-13 23:59:01
972
原创 洛谷 P1955 [NOI2015] 程序自动分析
本文介绍了洛谷 P1955 [NOI2015] 程序自动分析的解题思路与代码实现。题目要求处理多组数据,每组数据包含多个变量的相等或不等约束条件。解题核心是使用并查集来表示变量集合,并通过离散化处理变量编号以应对大范围编号问题。具体步骤包括:首先对变量的相等约束进行并查集合并操作,然后检查所有不等约束是否与并查集状态冲突。如果所有约束条件都能被满足,则输出"YES",否则输出"NO"。代码中实现了并查集的初始化、查找与合并操作,以及离散化处理过程,并通过遍历约束条件进
2025-05-12 23:01:22
725
原创 信息学奥赛一本通 1488:新的开始
题目要求为多个矿井供电,每个矿井可以选择建立发电站或通过电网连接到已供电的网络。通过将建立发电站的操作转化为从虚拟顶点0到矿井的边,问题转化为求包含顶点0的最小生成树。可以使用Prim算法或Kruskal算法求解。Prim算法通过维护未访问顶点的最小距离,逐步扩展生成树;Kruskal算法则通过排序边并选择不形成环的边来构建生成树。两种方法均能有效求解最小总费用。
2025-05-11 12:19:25
958
原创 信息学奥赛一本通 1511:【SCOI2011】糖果 | 洛谷 P3275 [SCOI2011] 糖果
因此如果一个强连通分量内存在正权边,由于其他的边都是非负的,那么该正权边所在的由该强连通分量内的边所构成的环一定是正权环。因为顶点i所在强连通分量中各顶点之间的边的权值都为0,源点到一个强连通分量中各顶点的最长路径长度相同。如果源点到顶点u的最长路径长度加上顶点u到顶点v的边权w,大于源点到顶点v的最长路径长度。那么源点到顶点v的最长路径长度就是源点到顶点u的最长路径长度加上顶点u到顶点v的边权w。,在图中建立一条从顶点j到顶点i权值为c的边,这样的一条边记作<j,i,c>。
2025-05-08 20:56:25
733
原创 信息学奥赛一本通 1424:【例题3】喷水装置
设p位置的喷头半径为r,圆心为P半径为r的圆与草坪上边界线段相交于点A和点C。该题问最少使用多少喷头可以覆盖草坪,即询问在给定多个区间中最少选择多少区间可以覆盖给定的线段。每个喷头覆盖的区域是一个圆形,草坪上被一个喷头覆盖的有效区域是一个矩形,该矩形的左端点坐标到右端点坐标形成一个线段。的左端点,第0位置就不会被任何区间包含,这就不是一组解了。这一次选择的,也就是唯一包含第0位置的区间,记该区间为。:上一次选择的区间的右端点,初值为0。的左端点大于0,后面的区间左端点都大于。的喷头可以完整覆盖一段草坪。
2025-05-06 16:52:05
888
原创 信息学奥赛一本通 1454:山峰和山谷
访问某位置(sx,sy)后,尝试访问其周围(上、下、左、右、左上、右上、左下、右下)的位置(x,y),(x,y)位置需要保证在地图范围内且没有访问过。尝试从每个位置出发进行搜索(可以进行深搜或广搜)。如果该位置没有访问过,则从该位置开始进行搜索。相同高度的相邻多个位置构成一个连通块。设二维数组标记每个位置是否已访问过。最后输出山谷和山峰的数量。当前连通块搜索结束后,
2025-04-29 15:04:33
702
原创 信息学奥赛一本通 1509:【例 1】Intervals | OpenJudge 百练 1201:Intervals
范围内已选点数量,为区间查询,选择一个点为区间修改,这一步可以使用树状数组优化,将区间查询的复杂度从。中最多可以选出b-a+1个数,从a-1到b的路径上可能有多条正权边,但正权边的权值加和,即路径的权值。,如果顶点b到顶点a-1有路径,必然由【顶点i到顶点i-1的权值为-1的有向边】构成,边数为。如果选择了第j点,那么小于等于j的第一个未选择点,就是小于等于i的第一个未选择点,因此将。没有变,仍然为i+2,而小于等于i+3的第一个未选择点此时为i,不是i+2。:顶点i到顶点i-1有权值为-1的有向边。
2025-04-26 00:26:47
889
原创 信息学奥赛一本通 1505:【例 2】双调路径 | 洛谷 P5530 [BalticOI 2002] 双调路径
阶段:到达顶点编号i,路径费用j(或者此处也可以选择使用取路径时间,本题中费用和时间是等价的)决策:从某顶点出发下一步到哪个顶点策略:路径策略集合:从源点s出发到顶点i的路径费用为j的所有路径条件:时间最小在路径费用固定的情况下,只有时间最小的路径才可能是最“小”路径,时间更大的路径没有必要统计。因此只需要统计费用固定的所有路径中时间最小的路径的最小时间。统计量:时间状态定义dpijdp_{i,j}dpij。
2025-04-23 21:12:04
1045
原创 信息学奥赛一本通 1504:【例 1】Word Rings | 洛谷 SP2885 WORDRING - Word Rings
作为字符串前后端的两个字符是顶点(例单词ababc,开端ab是一个顶点,末端bc是一个顶点),每个单词是一条连接前后端两个顶点的边,边的权值为单词的长度(字符数)。设端点字符串的第一个字符为变量x,第二个字符为变量y,由于所有的字符都是小写的,那么将这两个字符看做一个26进制数字,哈希值为该数字的数值。取某个值后,图中每条边的边权都减少x,即便图中存在负权环,可能是平均路径长度较小的一个环变成了负权环,而平均路径长度最大的环的边权加和还满足。时,将图中每条边的权值减少x后,一定就不存在正权环了。
2025-04-21 23:09:05
924
原创 CSP-J 2019 入门级 第一轮(初赛) 答案及解析
答:A。中国的国家域名是.cn答:D按位与运算的规则为:1&1=1,1&0=0,0&1=0,0&0=0将两个二进制数每位分别进行按位与运算,得到结果:选D。答:C1字节=8位,一个32位整型变量占用32/8=4字节,选C。答:As初值为a,循环c次,每次让s减少1,一共减少了数值c。因此该段代码的作用是使变量s的值变为a的值减c,即s = a-c,选A。答:A对于长为n的有序序列进行二分查找,最大比较次数为⌊log2n⌋1本题n。
2025-04-20 15:29:01
1090
原创 信息学奥赛一本通 1621:轻拍牛头 | 洛谷 P2926 [USACO08DEC] Patting Heads S
在这n个数中的约数还包括自己,所以实际约数的个数需要减1。的每个约数j,加和变量ct增加该约数在输入的n个数中出现的次数。有n个数,对于其中每个数,问这n个数中有几个数是它的约数。记录数值i在序列中的约数个数(不包括自己),如果已经求出过。表示输入的n个数中,数值i出现的次数。约数在这n个数中的个数进行加和即可。,遍历n个数,计数看有多少数字是。的约数在这n个数中有几个,将所有。,需要循环n次,总体时间复杂度为。将输入的n个数保存在a数组,的约数在这n个数中个数。,m为数值范围,最大为。
2025-04-17 15:45:32
613
原创 信息学奥赛一本通 1623:Sherlock and His Girlfriend | 洛谷 CF776B Sherlock and his girlfriend
如果序列中一个质数是另一个合数的因数,那么质数与合数的染色必然不同。那么可以将所有质数染成颜色1,将所有合数染成颜色2,此时染色数最少。对于整数序列2,3,…,n+1,如果一个数是另一个数的质因数,则两个数的颜色必须不同,求最少使用颜色数量。对于所有质数,任意一个质数不可能是另一个质数的质因数。因此任意两个质数的颜色可以相同。首先,合数不是质数,不可能作为另一个合数的质因数。因此任意两个合数的颜色可以相同。那么如果对于一个数对,其中较小的数不是较大数的质因数,那么两数的颜色可以相同。
2025-04-17 15:07:17
328
原创 信息学奥赛一本通 1622:Goldbach’s Conjecture | 洛谷 UVA543 Goldbach‘s Conjecture
虽然哥的巴赫猜想还没有被证明,但在题目给定的范围找到一个偶数不满足哥的巴赫猜想是不可能的,如果你找到了哥的巴赫猜想的反例,都可以得菲尔兹奖了。,而该数是相加的两个素数中的较小的数,因此该数需要满足不超过n的一半,即需要满足。如果第二个数也是素数,则输出n等于两个数相加的公式,并跳出循环。判断整数n是否可以写成两个奇素数的加和,枚举第一个较小的奇素数。,判断第二个数是否是素数,可以使用前面求出的isPrime数组,保存第i个质数,pn是保存在prime数组中的质数的个数。是2,是偶数,略过。
2025-04-17 14:07:13
395
原创 信息学奥赛一本通 1508:Easy SSSP
(或者可以分别以第1号到第n号顶点为源点,运行SPFA算法,判断是否存在负权环。判断是否存在负权环可以使用DFS版本的SPFA,相对效率更高。可以假想存在一个超级源点,第0号顶点。第0号顶点到第1到第n号顶点都有权值为0的边。执行SPFA算法时,统计顶点的入队次数,如果入队次数大于n,则存在负权环。使用SPFA统计整个图中是否有负环,初始需要将所有顶点都入队。而后再以S为源点求单源最短路径。
2025-04-16 16:03:48
289
原创 洛谷 P3385 【模板】负环
图中可能有负权边,也可能有负权环,需要通过求最短路算法判断图中是否存在负权环,需要使用Bellman-Ford算法,或其优化算法,如队列优化的Bellman-Ford算法,即SPFA算法。数组oldDis记录上一轮源点到顶点i的最短路径长度,数组dis记录这一轮计算后源点到顶点i的最短路径长度。因此将最短路径长度发生更新的顶点入队,每次出队一个顶点u,对其邻接点v进行松弛操作。如果这一轮没有进行松弛操作,下一轮也不会进行松弛操作,则最短路径求解结束,直接跳出循环。在SPFA算法中,使用双端队列。
2025-04-16 00:40:05
653
原创 信息学奥赛一本通 1960 【12NOIP普及组】文化之旅 | 洛谷 P1078 [NOIP 2012 普及组] 文化之旅
该题目给定的数据范围中,可以构造出无论写出什么代码,在1s内都无法通过该测试点的数据,因此说该题是错题。通过最短路算法(如Dijkstra)求出在没有文化排斥的限制的情况下,任意顶点到终点t的最短路径。那么实际在有文化限制的条件下,d与u到t的最短路径加和也一定大于minDis,因此可以剪枝。从顶点u访问到顶点v时,在顶点v不是终点t的情况下,顶点v的文化不能和终点t的文化相同。同时由于一定学习过起点s的文化,那么起点s的文化不能排斥顶点v的文化。,顶点v的文化也不能排斥顶点t的文化。
2025-04-15 00:55:52
937
原创 信息学奥赛一本通 1498:Roadblocks | 洛谷 P2865 [USACO06NOV] Roadblocks G
而求次短路时不应设vis数组记录顶点是否出队,因为当顶点u第二次出队时,如果是到顶点u有长为d2的路径,基于该存在的路径虽然不可能再更新各顶点的最短路径dis1的长度,但可能更新各顶点的次短路径dis2的长度。通过顶点u扩展出的新的路径的长度为d1+w(w为顶点u到其某个邻接点的边权),因为Dijkstra的前提是图中没有负权边,所以d1+w一定大于d1,因此新入队的Path对象的d属性也大于d1。因此接下来出队的Path对象的d属性一定大于等于d1,即按出队顺序看,Path对象的d属性是单调递增的。
2025-04-13 23:51:18
1091
原创 信息学奥赛一本通 1500:新年好 | 洛谷 P5764 [CQOI2005] 新年好
为源点的单源最短路径,总共执行6次Dijkstra算法,由于顶点数n达到。,可以按不同顺序访问各个目标顶点,访问目标顶点的所有顺序,即为序列。的朴素Dijkstra算法,必须使用Dijkstra堆优化算法。每个车站是一个顶点,每条公路是一条无向边,该图是无向图。深搜回溯得到所有目标顶点的排列,设假想存在目标顶点序列为。是第i个亲戚所在顶点的编号,叫做目标顶点。出发访问所有目标顶点的路径总长为。为源点的单源最短路径问题后,得到。这5个顶点之间的最短路径长度。为家的顶点编号,也就是设。的最短路径,那么设顶点。
2025-04-13 13:12:51
1028
原创 信息学奥赛一本通 1497:农场派对 | 洛谷 P1821 [USACO07FEB] Cow Party S
的最短路径,直观的想法是求出任意顶点到任意顶点的路径,也就是求解多源最短路问题。原图中顶点A到顶点B的所有路径中最短的路径,就是反图中顶点B到顶点A的所有路径中最短的路径。原图中顶点A到顶点B的路径,就是一条反图中顶点B到顶点A的路径。出发的单源最短路径问题,就可以获得原图中任意其它顶点到顶点。每个农场是一个顶点,农场之间的道路是边,该图是有向图。的最短路径到达开派对的农场,再走一条从顶点。的最短路径,可以建立反图,求反图中顶点。的最短路径加和的最大值,即为本题结果。为源点的单源最短路径问题,获取从顶点。
2025-04-13 08:27:28
977
原创 信息学奥赛一本通 2114:【24CSPJ普及组】接龙(chain) | 洛谷 P11230 [CSP-J 2024] 接龙
个vector,每个vector中分别保存一行的数字,可以使每行数字下标仍然从1开始。下一轮取子段时,要避开上一次取子段所在的行。其它情况自然也是可行的,不会出现连续两次选择一行中的子段的情况。要根据接龙序列最后一个数字的前一个数字分割策略集合。轮选择时,选择哪一行的子段都可以,无需避开哪一行。轮必须以数值1为末尾元素,才是可行的。,当然下标不能小于1,因此实际最小起始下标为。数组,轮数最多100轮,末尾元素值的最大值是。本题要求接龙的起始元素必须是1,第。时,子段起始元素下标最小,为。
2025-04-09 16:47:07
1116
原创 信息学奥赛一本通 1936:【06NOIP普及组】Jam的计数法 | 洛谷 P1061 [NOIP 2006 普及组] Jam 的计数法
该过程为一个预先处理的过程,设bool类型量pre,初值为真,pre为真表示当前在进行预处理,使整个dfs过程达到刚好搜索输出b字符串的状态。看第4位,i需要取下一个字符,如果第4位取j,由于从左到右要严格递增,则第5位无法再取字符。需要根据输入的字符串b,去设置搜索过程中各变量的值,让搜索过程中各变量的值等同于上述代码运行到刚刚输出b字符串时的数值。设计数变量ct计数输出数字的数量,每输出一个数字,计数增加1,当计数达到5时,结束搜索。,搜索确定第一个数的值,如果第1个数的值是b字符串第1个字符的编号。
2025-04-08 00:41:34
330
原创 信息学奥赛一本通 1929:【04NOIP普及组】火星人 | 洛谷 P1088 [NOIP 2004 普及组] 火星人
这是一个预先处理的过程,设bool类型量pre,初值为真,pre为真表示当前在进行预处理,使整个dfs过程达到刚好搜索出输入的num序列的状态。循环m次,每次循环取下一个排列,再将序列输出,即为结果。要想使该排列表示的数加上m,而后得到手指序列,就是要取按字典序排序的在1到n的全排列中,当前排列后的第m个排列。,其下一个排列就是将[lb, ub)区间内元素的全排列按字典序升序给出后,当前序列的下一个序列。火星人的手指排列就是一个1到n的排列,该排列表示的数就是该排列在按字典序排序的1到n的全排列中是。
2025-04-07 23:58:58
717
原创 洛谷 P1330 封锁阳光大学
对每个连通分量进行二分图染色,染色的同时统计每个颜色顶点集合的顶点数量。染色后得到两种颜色的顶点集合。由于要选择最少的顶点,那么看哪一个集合的顶点数量更少,就选择哪个集合中的所有顶点。将每个连通分量中顶点数更少的集合的顶点数加和,即为该题结果。对于一个图的连通分量,所有选择的顶点构成一个集合,未选择的顶点构成一个集合。图中每条边都连接了一个已选择顶点和未选择顶点,显然该图是二分图。河蟹准备封锁所有道路,也就是说每条边两端的顶点至少有一个是被选择的顶点。不存在某条边两端都是未选择顶点。
2025-04-07 21:28:00
275
原创 信息学奥赛一本通 1861:【10NOIP提高组】关押罪犯 | 洛谷 P1525 [NOIP 2010 提高组] 关押罪犯
按权值从大到小遍历所有的边,尽量让权值大的边所连接的两个顶点不在同一个集合。如果发现某条边连接的两个顶点无法放在不同的集合,那么该边的两个顶点就必须放在相同的集合中,该边就是集合中边权最大的边。该边的边权就是所有的集合划分方案中集合中最大边权的最小值。现在给定很多顶点和预设的边,将所有的顶点分为两个集合,每个集合中顶点之间的边都生效。有顶点1到顶点3的边,权值为3,有顶点2到顶点3的边,权值为2,设总顶点数n为10。一个囚犯是一个顶点,一个囚犯对可以看做一条边,每个囚犯对的怨气值是边的权值。
2025-04-07 21:13:32
1028
原创 信息学奥赛一本通 1612:特别行动队 | 洛谷 P3628 [APIO2010] 特别行动队
阶段:前i个元素决策:是否将第i加入子段策略:子段划分的方案策略集合:前i个元素的所有子段划分方案。条件:费用最大统计量:费用状态定义dpidp_idpi:前i个元素的所有子段划分方案中,费用最大的方案的费用。初始状态dp00dp_0=0dp00。
2025-04-04 00:03:34
816
原创 信息学奥赛一本通 1611:仓库建设 | 洛谷 P2120 [ZJOI2007] 仓库建设
阶段:将前i个工厂的产品都运进仓库由于只能往编号更大的工厂运货,为了保证前i个工厂的货都进仓库,那么第i工厂必须建立仓库。决策:在哪个工厂建立仓库策略:选择工厂建立仓库的方案策略集合:要想将前i个工厂的产品都运进仓库,建立仓库的方案条件:费用最小统计量:费用状态定义dpidp_idpi:考虑将前iii个工厂的产品都运进仓库,且一定在第iii工厂建立仓库的所有方案中,费用最小的方案的费用。初始状态dp00dp_0=0dp00。
2025-04-02 23:41:27
966
Java控制台猜数字游戏
2011-06-28
c++重载输出流运算符<<时,为什么不能输出表达式的值
2022-01-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人