OpenJudge题解
文章平均质量分 62
OpenJudge NOI:
http://noi.openjudge.cn/
OpenJudge 百练:
http://bailian.openjudge.cn/
君义_noip
五道口职业技术学院毕业
信息学奥赛教练
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
OpenJudge NOI 2.5 131:Channel Allocation
摘要 本文介绍了信道分配问题的解决方法。给定一个中继器网络,每个中继器需要分配不同的信道以避免相邻中继器之间的干扰。问题转化为图的顶点着色问题,目标是用最少的颜色为图中的顶点着色,且相邻顶点颜色不同。通过深度优先搜索结合剪枝策略(如按度排序和最优性剪枝)来求解最小着色数。代码实现中,邻接矩阵表示图结构,按照顶点度数排序后依次着色,最终输出所需的最少信道数量。对于平面图,结果保证不超过4种颜色。原创 2025-12-18 17:18:54 · 538 阅读 · 0 评论 -
信息学奥赛一本通 1639:Biorhythms | OpenJudge 百练 1006:Biorhythms
摘要:本文介绍了如何使用中国剩余定理解决生物节律问题。题目给出了体力、情感和智力三个高峰的起始时间和周期,要求计算从给定日期起下一次三个高峰同时出现的天数。通过建立同余方程组并应用中国剩余定理,可以求出最小解x0。若x0小于等于给定日期d,则加上周期21252天得到下一次高峰日期。最终输出距离d的天数。代码实现了这一算法,并通过样例验证了正确性。原创 2025-12-18 00:48:35 · 898 阅读 · 0 评论 -
信息学奥赛一本通 1633:【例 3】Sumdiv | OpenJudge 百练 1845:Sumdiv | 洛谷 P1593 因子和
摘要:题目要求计算A^B的约数和模9901的结果。解法基于算术基本定理分解质因数,结合等比数列求和公式与费马小定理处理大指数情况。当A为0或1时直接返回结果;否则分解A的质因数,对每个质因数p^a计算1+p+...+p^(a*B)模9901的值。利用快速幂求逆元和降幂处理,最终将各质因数结果相乘取模得到答案。原创 2025-12-13 02:08:31 · 909 阅读 · 0 评论 -
信息学奥赛一本通 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 · 1031 阅读 · 0 评论 -
信息学奥赛一本通 1525:电力 | OpenJudge 百练 2117:Electricity
输入时边数可能为0,因此需要判断顶点数和边数都为0时,再结束程序。注意输入的顶点编号从0开始,本人习惯从1开始,就将顶点编号都增加1。尝试以每个顶点为起始顶点调用tarjan,成功调用tarjan进行深搜的次数就是连通分量的数量。输入无向图,该无向图未必是连通的。如果顶点u有邻接点,且不是割点,删掉u后还是有1个连通分量,如果去掉顶点i,则相当于先少1个连通分量,而后增加。表示u所在的连通分量在去掉顶点u后会变成几个连通分量。如果顶点u没有邻接点,删掉u后这里会变为0个连通分量,连通块就是连通分量。原创 2025-03-19 23:47:17 · 429 阅读 · 0 评论 -
信息学奥赛一本通 1522:网络 | OpenJudge 百练 1144:Network
如果一个交换机停止工作,导致其它一些地点不能通讯,这样的地点交灾区。那么也就是图中去掉该顶点后,有些顶点之间不再连通(没有路径),那么也就是整个图不再是连通图。使用tarjan算法求出所有割点,将割点保存在一个set中,或用数组标记哪些顶点是割点,而后统计割点数量。每个交换机是一个顶点,如果两地点之间有电话线连接,那么两顶点之间有一条无向边,该图是无向图。初始时任何地点之间都是可以通讯的,也就是说这是一个无向连通图。灾区就是割点,统计灾区的数量就是统计割点的数量。原创 2025-02-23 22:25:17 · 461 阅读 · 0 评论 -
信息学奥赛一本通 1434:【例题2】Best Cow Fences | 洛谷 P10450 [USACO03MAR] Best Cow Fences G | OpenJudge 百练 2018
ybt 1434:【例题2】Best Cow Fences洛谷 P10450 [USACO03MAR] Best Cow Fences Gybt1434的描述不够严谨,请看洛谷P10450的描述。题目需要求平均数最大的,长度大于等于L的子段,求这个子段的平均数。或者可以描述为:给定一个序列,它的所有长度大于等于L的子段中,平均数最大的子段的平均数。 求平均数,需要先求子段和再除以子段长度(子段中元素个数)。要想快速求出子段和,自然想到先求前缀和s,而后区间[l,r]的子段和就是。一个基本的思路就原创 2024-12-14 17:21:47 · 1392 阅读 · 0 评论 -
信息学奥赛一本通 1443:【例题4】Addition Chains | OpenJudge 百练 2248:Addition Chains | 洛谷 UVA529 Addition Chains
在确定第k个数字前,已经确定的数字有k-1个,当前这一趟搜索的最大搜索层数为maxDep,也就是这一趟搜索得到的序列都有maxDep个数字,看是否存在第maxDep个数字是n的情况。我们可以让每次生成的数字一定大于这个序列中的最后一个数字,保证序列是升序的,这样可以避免重复搜索到相同的序列。,则后面即便每次都添加可能的最大的数字,得到的第maxDep个数字的最大值也小于n,第maxDep个数字不可能为n,因此可以剪枝。该题要找到序列长度最短的,序列的最后一个数字(也就是最大值)为n的序列。原创 2024-12-11 16:12:55 · 1158 阅读 · 0 评论 -
信息学奥赛一本通 1433:【例题1】愤怒的牛 | 洛谷 P1676 [USACO05FEB] Aggressive cows G | OpenJudge 百练 2456:Aggressive cow
如果我们求出在任意相邻两头牛之间的距离都大于等于k的前提下,可以放入隔间的牛的最大数量,只要这个最大数量大于等于c,就说明可以在隔间中放入c头牛。正向思路是:搜索所有将牛放入隔间的方案,确定每种方案中两头牛之间的最小距离,而后比较各个方案中两头牛之间的最小距离,求最大值。该题求的是“任意两头牛之间的最小距离的最大值”,即最小值最大的问题,看到这样的题面,应该最先想到使用二分答案。:相邻牛之间的距离大于等于k的前提下,可以放入隔间的最多的牛的数量大于等于c。使用求满足条件的最大值的二分答案写法,求出答案。原创 2024-12-09 23:00:18 · 956 阅读 · 0 评论 -
信息学奥赛一本通 1441:【例题2】生日蛋糕 | OpenJudge NOI 4.7 192:生日蛋糕 | 洛谷 P1731 T148457 [NOI1999] 生日蛋糕
根据这一原理,在搜索到第i层时,在剩余待确定体积固定的情况下,如果第1到第i-1层的半径和当前第i层的半径相同时求出第1到第i-1层的表面积加和,一定比第1到第i-1层半径比第i层更小时得到的表面积更小。的最大值:第1到第M-1层都取最小体积时,第M层体积最大,此时第M层高度取1,半径最大。从第M层开始逐层向上搜索,一直搜索到第1层,在确定第M层的半径后,将ans初值设为。后,枚举第i层高度,第i层高度最小为i。那么可以求出每层的最小体积,第i层的最小体积为。,以及第1层到第i层的最小总体积。原创 2024-10-31 17:48:19 · 1525 阅读 · 0 评论 -
OpenJudge NOI 1.1 01:Hello, World!
【代码】OpenJudge NOI 1.1 01:Hello, World!原创 2024-07-19 16:35:44 · 1600 阅读 · 0 评论 -
OpenJudge NOI 2.5 1490:A Knight‘s Journey
从(x, y)位置出发可以到达的位置(x+a, y+b)的遍历顺序为(只写出偏移量{a, b})为:{-1, -2}, {1, -2}, {-2, -1}, {2, -1}, {-2, 1}, {2, 1}, {-1, 2}, {1, 2}。按照该顺序遍历从(x, y)可以到达的所有位置,进行搜索,搜索从该点出发的所有可能路径。从(x,y)位置出发,可以到达的位置记为(x+a, y+b),其中(a, b)为行与列的偏移量。国际象棋的棋盘,数字表示行,字母表示列,因而输入p,q指的是该棋盘为p行q列。原创 2023-02-11 01:23:35 · 924 阅读 · 0 评论 -
OpenJudge NOI 2.5 1159:Maze
一个字符是以下几种情况之一:‘X’(一个表示墙的块,探险者不能进入),‘.’(一个空的块),‘S’(Acm的起始位置),‘G’(财宝位置),‘A’, ‘B’, ‘C’, ‘D’, ‘E’(门),‘a’, ‘b’, ‘c’, ‘d’, ‘e’(门的钥匙)。例如,如果门A有三把钥匙,为了开门他需要先找到所有的三把钥匙(就是三个在迷宫中的表示门’A’钥匙的’a’),现在请写一个程序来告诉Acm他是否能够找到财宝。从该门的位置出发继续搜索它所在的整个连通块,更新钥匙数量以及可以接触到的门,再判断哪些门可以开启。原创 2023-02-02 16:32:17 · 686 阅读 · 0 评论 -
OpenJudge NOI 2.4 8463:Stupid cat & Doge
先假设当前等级n的正方形中的4个等级为n-1的小正方形都是开口向左的图形。小正方形编号从0开始数,第0个小正方形在左上方,第1个小正方形在右上方,第2个在右下方,第3个在左下方。,使用该函数,传入猫和狗的房屋编号减一(因为题目给定的房屋编号是从1开始的,我们定义的val是从0开始的),即可求得猫和狗的位置。:在等级n的正方形中找到数值val的位置(等级n的正方形共有。,一共包含4个等级n-1的小正方形,小正方形边长。(整除运算),在这个小正方形中,要找的数值为。,p是翻折前的位置,r是翻折后的位置。原创 2023-01-29 01:39:40 · 1022 阅读 · 0 评论 -
OpenJudge NOI 2.2 1777:文件结构“图”
先将每行数据读入,保存在一个vector类对象dataSet中(也可以保存在数组中),当读入一行*(星号)时,dataSet中已保存了一组数据,处理并输出这组数据。最后遍历输出ms中的所有文件名。由于multiset原理是红黑树,遍历multiset类对象即可得到升序序列。设函数showDir,参数为当前目录名字,以及缩进层级。先声明multiset类型的ms,用于对文件名作排序。(这里也可以将文件名都先加入数组,然后对数组排序)从前向后遍历dataSet中的数据。原创 2023-01-17 21:20:26 · 1070 阅读 · 0 评论 -
OpenJudge NOI 2.2 9273:PKU2506Tiling | 2.3 9273:PKU2506Tiling
因此可以把高精度数字的位数设为255。n最大为250,因此该题结果最大值。使用类和重载运算符,记忆化递归。因此该题必须使用高精度计算。也一定是一个高精度数字。,是一个高精度数字。原创 2023-01-16 23:46:52 · 1243 阅读 · 0 评论 -
OpenJudge NOI 3.9 3341:Set
用来保存所有曾经加入ms中的数字。每个加入ms中的数字,也加入到st中。由于st中每个数值最多保存1个,因此x在st中的个数即表示x是否曾经加入ms(1表示曾经加入,0表示未曾加入)。由于ask会询问某元素是否曾加入过整数集。题中没说明数值x的范围,默认是所有int可能表示的数值,范围为。整数集中可能有重复元素,因此该整数集需要使用multiset来保存。,无法使用vis数组来标记某数字是否访问过。多重集合,可以保存多个相同的数值。这里可以再开一个set类型的对象,集合,相同的数值只能保存1个。原创 2023-01-11 23:51:13 · 807 阅读 · 0 评论 -
OpenJudge NOI 2.1 8759:火车上的人数
这里不方便得到以b为未知数的方程。如果用枚举算法来做的话,其实也不是一定要把方程列出来。关于b的范围,最小为0。根据题目提供的条件,n最小值为4。,递推最大循环接近n次,n最大为15,因此总循环次数为。已知第n站下车m人,即第n-1站出发时车上有m人,即。题目所求的是在第x站出发时车上的人数,即。因此把b的最大值设为m-1即可。复杂度分析:b循环m次,m最大为。,从第i站出发时车上人数为。,实际就是要求p数组。这里可以枚举b的值。原创 2023-01-11 12:54:52 · 1294 阅读 · 0 评论 -
OpenJudge NOI 2.1 8755:砝码称重 | 洛谷 P2347 [NOIP1996 提高组] 砝码称重
OpenJudge NOI 2.1 8755:砝码称重设重量为1g、2g、3g、5g、10g、20g的砝码的总数量分别为:a1,a2,a3,a5,a10,a20a_1, a_2, a_3, a_5, a_{10}, a_{20}a1,a2,a3,a5,a10,a20,选择使用的砝码数量分别为:i1,i2,i3,i5,i10,i20i_1, i_2, i_3, i_5, i_{10}, i_{20}i1,i2,i3,i5,i10,i20,设bool类型的vis数组,为真表示可以称出重原创 2023-01-10 16:48:36 · 1777 阅读 · 0 评论 -
OpenJudge NOI 2.1 7832:最接近的分数
那么直接跳出c的循环。因为如果继续c的循环,c只会越来越大,外层由m从1循环到n,内层由c从1循环到m-1。会越来越大,后面得到的都是不满足条件的情况。设这个分数的分母为m,分子为c。假设当前记录的满足条件的。这样可以保证最后得到的。构成的分数是最简分数。如果后面发现当c变为。原创 2023-01-05 23:30:22 · 1553 阅读 · 0 评论 -
OpenJudge NOI 2.1 7623:五户共井问题
观察该方程组,共有6个未知数5个方程,只要确定其中一个未知数后,就可以解方程。不过那样解方程比较麻烦。比较方便的做法是确定两个未知数。若以这种方法做枚举,那么h要从1枚举到k(k单位为厘米时,最大2000),a~e都要从1枚举到h,最大枚举次数为。设井深为h,A、B、C、D、E家的绳长分别为a、b、c、d、e。把输入的k自己乘以100,从以米为单位转为以厘米为单位。且a, b, c, d, e互不相等。,该枚举次数显然是不可接受的。先想最直接的枚举思路。为1时,总枚举次数为。原创 2023-01-05 00:41:08 · 1265 阅读 · 0 评论 -
OpenJudge NOI 2.1 755:Flip Game
以目标1为例,想要把所有棋子都翻成白色,第1行的翻转方案已经确定了,第1行翻转后,还剩余一些黑色棋子。那么这些棋子必须通过对第2行同列棋子进行翻转,才能将第1行的黑色棋子都变为白色。以此类推,每行的翻转情况都确定了,如果最后一行在翻转后,最后一行不都是白色,那么这一躺对第1行的翻转是无效的,去看下一种对第1行的翻转。游戏的目标是把所有的棋子翻转成全部棋子白色朝上,或全部棋子黑色朝上。第2行翻转后,第2行的黑色棋子必须通过对第3行的棋子进行翻转后才能变成白色。每个w和b表示游戏棋盘中的一个位置的棋的颜色。原创 2023-01-04 02:57:36 · 1393 阅读 · 0 评论 -
OpenJudge NOI 2.1 7621:硬币面值组合
根据题目要求,先让c从小到大遍历,再让b从小到大遍历,最后看a。原创 2022-12-30 02:18:06 · 1737 阅读 · 0 评论 -
OpenJudge NOI 2.1 7217:猴子吃桃
这与我们平时做的已知前面的项,和从前向后的递推公式,推出后面的项没有本质区别。是第n-2只猴子扔掉1个桃子并拿走1份桃子后剩下的n-1份桃子,,那么一定应该有。是第1只猴子面对的桃子数量,即为题目所求的:当猴子数量为N时海滩上最少的桃子数。是第n-1只猴子扔掉1个桃子并拿走1份桃子后剩下的n-1份桃子,那么一定应该有。是第1只猴子扔掉1个桃子并拿走1份桃子后剩下的n-1份桃子,那么一定应该有。如不满足则结束递推。如果满足,则第n-1只猴子面对的桃子数。设第n只猴子拿到的桃子数为m,第n只猴子面对的桃子数。原创 2022-12-13 15:17:45 · 1923 阅读 · 0 评论 -
OpenJudge NOI 2.1 7216:Minecraft
该题等价为:求体积为n的棱长都是正整数的长方体的最小表面积。显然,这个长方体的三条棱a,b,c必须都是n的因数。比较得到所有体积为n的长方体的表面积的最小值。如果n能整除a*b,那么第三条棱存在。得到,求出每个可能的长方体的表面积。枚举长方体的两条棱:a与b。原创 2022-11-29 17:36:39 · 1091 阅读 · 1 评论 -
OpenJudge NOI 2.1 7213:垃圾炸弹
考虑到有垃圾路口的数量n很小,最大值为20。那么我们在确定安放炸弹的位置后,枚举每个垃圾路口,看哪些垃圾路口在该炸弹的波及范围之内,将能被波及到的垃圾数量加和,即为在这里安装炸弹能销毁的垃圾数量。如果先枚举安放炸弹的位置,再枚举该炸弹波及的范围内的每个位置看这个位置有没有垃圾,那么总体复杂度会达到。我们考虑当炸弹威力d为最大值50时,冲击波波及的正方形边长为。根据题意,当爆炸威力为d时,冲击波范围是个正方形,其边长为。可以枚举每个可能安放炸弹的位置,路口一共有。,这个范围内的位置有。原创 2022-11-28 17:24:23 · 2229 阅读 · 0 评论 -
OpenJudge NOI 2.1 6188:比饭量
设三人的饭量是1,2,3,且两两不同。那么3人饭量所有可能的情况数就是3个数的全排列,可以使用深搜来搜索到所有的排列,而后判断每人的断言数是否与饭量顺序相反,如果是,则输出。每个断言可以写成一个关系表达式,该表达式的值为true(1)或false(0),把一个人的断言写成的关系表达式的值加起来,即为正确断言的数量。题目中说:“饭量和正确断言的个数是反序的关系”,也就是说:饭量越大,断言正确数越少。每个人有两个断言,正确断言的个数可能是2,1,0。显然3人的饭量也是不同的,这里假设为1,2,3。原创 2022-11-27 00:48:39 · 1646 阅读 · 2 评论 -
OpenJudge NOI 2.1 6187:称体重
设check函数,判断赵钱孙李4人的体重是否满足题目描述的各项条件。在找到满足条件的4人的体重后,将这四人的体重连同他们的名字数组一同按体重升序排序,而后输出每人的名字和体重。要使用枚举方法做题,就不要根据题意进行逻辑推理,直接想办法枚举出所有可能的情况,而后判断该情况是否成立。可以使用深搜的方法来获得多个数据的所有排列。对于每次搜索得到的一组排列,使用函数判断该排列是否满足题目给定的条件,如果满足则排序并输出。10,20,30,40,50中为4个人分配体重,实际上是做了一个P(5,4)的排列。原创 2022-11-26 00:16:17 · 1444 阅读 · 0 评论 -
OpenJudge NOI 2.1 6184:找和为K的两个元素
x从第1个数遍历到倒数第二个数,y从x的后一个数遍历到最后一个数,那么(x,y)就是枚举取出的一个数对。对于下标从0开始到n-1的数组。对于下标从1开始到n的数组。原创 2022-11-25 17:34:07 · 1489 阅读 · 0 评论 -
OpenJudge NOI 2.1 3526:最简真分数
序列中数字数量最大为600。对于数字个数为n的序列,所有可能的数对个数为。最简真分数的概念为:分子小于分母,且分子和分母互质的分数。两个数互质,等价于两个数的最大公约数为1。原创 2022-11-20 23:30:24 · 1512 阅读 · 0 评论 -
OpenJudge NOI 2.1 2983:谁是你的潜在朋友
对于第i个读者,遍历整个数组a,看有多少人喜欢的书与第i读者喜欢的相同,即数组a中有多少个数与。将该数量减1(除去自己与自己相等的情况),即为第i人的朋友数。如果为0,输出“BeiJu”。,该人数减1即为i的潜在朋友数。该人数如果为1,输出“BeiJu”。输入数据,如果第i人喜欢的图书为j,那么。遍历数组a,对于第i人喜欢的图书。表示第i个读者喜欢的书的编号。i从1到n循环,表示读者编号。表示第i个读者喜欢的书的编号。表示喜欢图书i的人数。,喜欢该图书的人数为。原创 2022-11-12 00:36:13 · 1126 阅读 · 0 评论 -
OpenJudge NOI 2.1 2723:因子问题
如果n是a的倍数,那么称a是n的因数或因子。如果没有找到符合条件的a,输出-1。原创 2022-11-12 00:20:25 · 1216 阅读 · 0 评论 -
OpenJudge NOI 2.1 2673:比赛排名
当搜索得到一个1~5的排列,也就是确定了每个人的名次后,使用函数判断是否满足:第1,2名的人说的话是真的,而且第3,4,5名的人说的话是假的。对于b的情况,如果b是第1名,这和他说的“我是第2名”矛盾,因此b一定不是第1名。如果b不是前两名,那么他说的“我是第2名”自然为假,不矛盾。a,b,c,d,e五个人所有可能的名次序列就是1~5的全排列,可以用深搜的方法得到5个数字的全排列。如果a不是第1名且不是第2名,那么a说的话为假,e一定不是第1名。如果a是第1或第2名,那么a说的话为真,e一定的第1名。原创 2022-11-11 00:28:34 · 1257 阅读 · 3 评论 -
OpenJudge NOI 2.1 250:Safecracker
(构造目标数字(target)的细节是保密的)为了找到那个组合,你必须选择满足下列方程的5个字母v、w、x、y和z,其中每个字母所表示的值为其在字母表中的顺序位置(A=1, B=2,…v,w,x,y,z都是变量,一共是5个位置,可以选的大写字母最多是12个,需要在可选的大写字母中选择5个字母,指定它们分别是v,w,x,y,z。输入由一行或多行组成,包括一个小于120万的目标(target)正整数,一个空格,然后是至少5个至多12个的大写英文字母,最后一行会包含一个0和字母END,这表示输入结束。原创 2022-11-10 00:42:11 · 625 阅读 · 0 评论 -
OpenJudge NOI 2.1 2472:子串计算
设map类型对象mp,键为子串,值为子串的个数。这样使用mp对象,就能通过子串获取到子串的个数。与解法2类似,设sub数组,保存Node类型对象,sub数组中的对象始终按子串字典序升序来排列。枚举结束后,对sub数组根据每个元素的子串按字典序从小到大进行排序,而后遍历输出。,每次新建一个键值对,实际上是在红黑树中插入一个新的结点,复杂度为。记输入字符串的长度为n,枚举子串的个数数量级为。如果字符串s长度为n,那么子串个数数量级为。字符串s的最大长度为100,子串个数为。原创 2022-11-08 20:07:17 · 1487 阅读 · 0 评论 -
OpenJudge NOI 2.1 1978:生理周期
以体力高峰为例,p是从当年第1天开始体力高峰出现的日期,体力周期是23天,那么体力高峰日期为。(k是自然数),反过来,一个日期x如果是体力高峰,那么一定有x-p能够整除23,即。题目要求输出的是距离给定时间的天数,如果满足条件,则输出x-d,结束程序。e是感情高峰第一次出现的日期,感情周期是28天,感情高峰日期为。i是智力高峰第一次出现的日期,智力周期是33天,智力高峰日期为。把从当年第1天开始数,第几天的天数叫做“日期”。一个日期x如果是感情高峰,一定有。一个日期x如果是智力高峰,一定有。原创 2022-11-04 17:44:21 · 1153 阅读 · 0 评论 -
OpenJudge NOI 2.1 1943:满足条件的整数
可以设bool类型数组isw, 长度为10005(因为最多查看到100的平方)首先确定1~100的平方,在isw中做标记。优化减少循环次数,可以让b从a的值开始进行循环。表示i是否是完全平方数。原创 2022-10-20 18:01:09 · 934 阅读 · 0 评论 -
OpenJudge NOI 4.7 8468:单词序列
初始结点里面包含起始字符串,序列长度为1,该结点入队。每出队一个结点,判断该结点中的字符串能否经过一次变换就能变成目标字符串,如果可以,输出序列长度。否则,遍历所有字典中的单词,看哪些单词没有使用过,且当前单词可以改变一个字母就可以变为该单词,如果有,生成一个结点包含该单词,序列长度加1,将该结点入队。如果没有找到从起始字符串到目标字符串的序列,返回0。该题求的是字符串变化的最短序列,求“最少”,“最短”一类问题,自然要用广搜来做。结点中保存当前单词,以及从初始单词转为当前单词的序列长度。......原创 2022-08-15 19:51:28 · 408 阅读 · 0 评论 -
OpenJudge NOI 2.1 1816:拨钟问题
每出队一个结点,在该结点内的移动序列的基础上增加1个移动,并执行该移动改变时钟状态。要增加的移动的编号必须大于等于该结点内移动序列的最后一次移动的编号,而且要保证同一移动的出现次数小于等于3。如果执行移动后,时钟都指向12点(时钟状态值都为0),那么此时的移动序列就是最短的移动序列。由于该问题的移动方法数只有9种,每种移动可以移动0, 1, 2, 3次,总移动方案数为。,可以枚举每种移动方案,选择其中可以使所有钟表为0的,移动次数最少的方案。执行4次移动与不执行,钟表的状态是一样的。...原创 2022-08-14 17:28:21 · 1741 阅读 · 0 评论 -
OpenJudge NOI 2.1 8757:三个三位数 | 洛谷 P1008 [NOIP1998 普及组] 三连击
【题目链接】洛谷 P1008 [NOIP1998 普及组] 三连击【题目考点】1. 枚举2. 数字拆分【解题思路】三个由1~9组成的3位数字,满足1:2:3。那么第一个数字最小为100,最大不会超过333(因为如果第一个数字大于333,那么第三个数字会大于1000,无法构成3位数)设一个布尔型vis数组,vis[i]表示数字i是否出现过。1~9这9个数字每个数字只能出现一次。在100~333范围内枚举第一个数字,检查该数字是否可用,步骤如下:对该数字做数字拆分:如果发现数字0则说明这原创 2022-01-12 21:11:18 · 1189 阅读 · 0 评论
分享