
加入题解目录题解
m0_73035684
这个作者很懒,什么都没留下…
展开
-
UVA116 单向TSP Unidirectional TSP
这个题其实挺简单的,很明显就是数字三角形那样的DP,然后唯一的难点就是这个题需要输出方案,行号字典序最小的方案,所以这里我们从后面的列向前DP,然后和BFS的时候记录路径是一样的方法,然后这个从后向前DP的方法也是和本书第6章后面的一个BFS习题是一样的思路,如果你从前向后DP其实是不好保证字典序最小的,但是这个为什么,至今也没找到一个人讲,只是感性的感受现在对这个结论有印象,所以第6章的那个BFS习题还一直没写,什么时候等自己真正的理解了,建立了逻辑思维体系而不是靠记忆,再去把那个题过了。原创 2024-05-19 14:17:10 · 382 阅读 · 0 评论 -
UVA1160 X-Plosives
这个题题意搞不懂,题目说的是不能有超过两个互相配对,那么这就是一个环,但是如果输入已经输入过的该怎么处理,也不知道,所以我就直接用set判重了,如果输入已经输入过的,那么就直接答案加一,交上去稀里糊涂的过了。原创 2024-05-06 05:25:55 · 227 阅读 · 0 评论 -
POJ2965 The Pilots Brothers‘ refrigerator
知识点:枚举,DFS。原创 2024-05-05 08:00:34 · 227 阅读 · 0 评论 -
UVA11235 Frequent values
这个题读完最值得注意的条件是序列是单调的,这会造成什么,那么就是相同的元素都是连续的,聚集在一起的,这样这个题就可以转化成区间最值问题,我们考虑最基本的情况,对于查询,中间是若干连续数,也就是所有的数都在查询区间里面,然后两边是某个数不完整的序列,所以,中间完整的部分,我们可以用st表之类的求其出现次数最多的元素的出现次数,因为不会st表,就用了线段树,然后我们再分别考虑两边的情况,知识点:线段树,RMQ。原创 2024-05-04 08:41:00 · 210 阅读 · 0 评论 -
P1072 [NOIP2009 提高组] Hankson 的趣味题
【代码】P1072 [NOIP2009 提高组] Hankson 的趣味题。原创 2024-04-29 11:13:56 · 142 阅读 · 0 评论 -
UVA10539 几乎是素数 Almost Prime Numbers
这个题还是比较简单的,题目说的数,是合数但是只有一个质因子,显然是质数的大于1次方的数,那么显然我们预处理1e6范围以内的质数就行了,然后每个质数,找他的大于1次方,并且在题目范围里面的数的个数就行了,这里还是可以用二分的,但是又没用,累了。原创 2024-04-29 03:46:16 · 158 阅读 · 0 评论 -
UVA1644 素数间隔 Prime Gap
这个题就是质数的判定,然后用二分效率能高一些,首先看题目的范围,我们知道可以用质数筛,先求出来需要用的质数,当然还有一种方法是以输入的数为中心向两边扩展,感觉这样子也行但是没试,我们先预处理出来可能用到的质数,然后一开始我用的是线性的做法,看了别人的题解才想起来这里可以用二分把时间从线性优化到log,就是找第一个大于等于输入的质数,然后输出答案就行了,感觉自己还是菜了啊,一开始写的时候没有用二分。原创 2024-04-29 03:27:26 · 133 阅读 · 0 评论 -
UVA1210 连续素数之和 Sum of Consecutive Prime Numbers
这个题显然可以使用尺取法,因为满足单调性和连续区间这两个条件,先用质数筛求出可能用到的质数,这样这个问题就变成了求多少个子数组和等于题目输入的数,用尺取法,这里稍微思考了一下就是尺取法的退出的条件,这个写的和上一次的不一样,当所有的数都查找完或者当前的子数组的长度是1的话,那么就退出,这是这次想的判断退出的条件。知识点:质数,尺取法。原创 2024-04-29 02:05:50 · 392 阅读 · 0 评论 -
P1463 [POI2001] [HAOI2007] 反素数
知识点:质数,约数,DFS。原创 2024-04-29 00:38:41 · 240 阅读 · 0 评论 -
AcWing 197. 阶乘分解
上面一个没说清楚的一个地方,考虑一个质数出现的次数,1到n里面,它在有的数里面不是因子,有的是1次因子,有的是2次因子,以此类推,我们用n除以这个质数的一次,得到的就是他作为大于等于1次因子出现的次数,除以它的二次,就是它作为大于等于2次因子出现的次数,这样累加,最后正好做到了不重不漏,原创 2024-04-28 17:10:34 · 265 阅读 · 0 评论 -
UVA10140 Prime Distance
【代码】UVA10140 Prime Distance。原创 2024-04-28 03:15:41 · 259 阅读 · 0 评论 -
UVA1326 Jurassic Remains
知识点:深搜,位运算。原创 2024-04-27 18:06:35 · 170 阅读 · 0 评论 -
P1434 [SHOI2002] 滑雪
刚才闲就把洛谷上面的滑雪题写了,谁知道打开书一看,这个居然是入门经典习题第一题,并且两个题基本一模一样,不知道是谁借鉴谁的,这个题我用的方法就是建图,拓扑排序,然后逆序动态规划,算是这类题的老套路,然后这个题边界条件是,没有后继结点的点的DP值是1,这个需要注意,然后这个DP是不指定起点和终点的,目前就会这一种递推的方法,这类题基本都是这样子写的。知识点:拓扑排序,动态规划,图论建模。原创 2024-04-13 19:39:37 · 169 阅读 · 0 评论 -
UVA12563 劲歌金曲 Jin Ge Jin Qu hao
这个算是01背包的小变形,但是这个题我的理解还不完全,这个题就三个点,首先就是剩余时间自己推一下就知道没有这么大,第二个是我们要给最后一首歌留点时间,所以背包的大小就要减一,避免用原来的背包大小正好填满,最后一个是这个题的要输出的答案,我把它当成一个二元组了,也就是这个背包的物品的价值当成是二元组了,所以这里就根进制一样,和前面的最短路的搜索还是一样的,就是物品数以一个很大的数加上这个物品的大小,就是我们这个题的背包模型的价值,但是看了看题解,发现基本没人这么写,还是要学习一下别人的思路。原创 2024-04-13 15:43:09 · 238 阅读 · 0 评论 -
UVA116 单向TSP Unidirectional TSP
这个还是DAG上的动态规划,因为题目里面规定了是从左向右走,保证了是有向无环图,然后状态是坐标,子问题是当前位置到最右边的最小值是多少,然后按照拓扑排序逆序递推就行了,这里需要输出路径,没有使用BFS里面一边处理一边记录上一个状态的写法,而是求解之后又正着推了一边,可以求出符合题意的路径,然后这个题是点权的动态规划,和前面第二道例题基本上是一模一样的,最后这个题uva上面过不了,但是hdu和udebug都过了,不知道怎么回事。知识点:动态规划,拓扑排序。原创 2024-04-13 07:42:18 · 248 阅读 · 0 评论 -
UVA437 巴比伦塔 The Tower of Babylon
然后就是一些小细节,这个题的边界条件,很显然是建的图里面出度为零的点,他们的状态的函数值就是自身的点权。知识点:动态规划,图论建模。原创 2024-04-12 13:08:40 · 200 阅读 · 0 评论 -
UVA818 切断圆环链 Cutting Chains
然后看这个题可以用指数枚举来做,因为数据很小,才15,2的15次方是3e4,在加上剪枝,应该是能过的,时间复杂度应该是前面再乘以边的数目,我们指数枚举,用散列数组来记录哪个环是开开的,然后到递归的终点的时候,做三个判断,我们一边遍历输入的边,如果有的边的连边的点是打开的,那么这个边是不用连接的,三个判断是,1如果有环,那么不行,2如果有点的入度大于2那么不行,如果连通块的个数大于开开的点的个数的二倍加一,那么不行,这个三个判断一下,就行了,这里应该是属于思维题的类型,用并查集来维护连通性,并且来判环,原创 2024-04-11 13:50:21 · 152 阅读 · 0 评论 -
UVA589 Pushing Boxes
但是acwing上面那个只要输出一条唯一的路径的还有一个测试点没过,不知道怎么写,uva这个输出任意一条路径的,其实就是dijsktra问题,和后面的车加油,以及紫书上面的三个被子倒水,这三个题说是搜索,都是无负权图最短路的模型,所以以后做题还要有这个建立模型的意识。这个题过了uva上面的,蓝书上面也是和uva一样的,就是输出最短路径,如果有多个路径的话,那么任意输出一个,acwing上面的只能输出唯一的路径,说是按照上下左右的顺序要唯一的,那个还没过,先写一下和进阶指南一样的题目。原创 2024-04-09 05:15:25 · 261 阅读 · 0 评论 -
UVA11694 Gokigen Naname谜题 Gokigen Naname
然后是深搜,一进去就要来一个剪枝,一开始因为没有写这个,这个剪枝就是,只要有一个是数字的点(注意不是方格)它周围还没填斜线的方格的数目小于它还需要连的斜线的数目,那么就剪枝,这也就是一开始弄那么多的数组的原因,这个应该属于可行性剪枝,因为题目说了,数字点周围连的线的个数必须恰好等于数字点的值,不能比数字多,同样不能比数字少,一开始就是这个剪枝没写,浪费了好几个小时,这个剪枝类似与李煜东组合枚举的写法,将指数枚举加上多不行,少也不行的剪枝,就变成了组合枚举,至此这个题终于完成了,写了160多行。原创 2024-04-08 01:54:52 · 340 阅读 · 0 评论 -
UVA12569 树上的机器人规划(简单版) Planning mobile robot on Tree (EASY Version)
一开始不会三进制状态压缩,然后就想着用两个二进制数来表示状态,理论上应该是可行的,但是实际不行,空间啥的应该不行,这个题还真亏了读题,发现只有一个机器人,这个是做题的关键,但是一开始写的时候没有特判,输出-1,改了就过了,这个题写了1个小时,知识点:BFS,状态压缩。原创 2024-04-05 22:29:34 · 244 阅读 · 0 评论 -
UVA11214 守卫键盘 Guarding the Chessboard
首先这个题可以使用迭代加深,并且答案会很小,然后是搜索的框架,就是每次寻找一个没有填过的位置去填,然后有两个剪枝,我们用数组来判断某行列主副对角线是否已经放置皇后,这里我们不要在往下递归的循环里面再去加循环了,这个显然是用木桶原理可以解释的,第一个剪枝就是我们如果当前位置所代表的行列主副对角线都有皇后了,那么不需要往下递归,然后第二个剪枝没有想起来,看了别人才知道的,那就是我们当前行放了,那么下次就从下一行开始搜,这个剪枝非常强,接下来主要是思考为什么这个剪枝是对的,知识点:深搜,剪枝,迭代加深。原创 2024-04-05 20:49:53 · 246 阅读 · 0 评论 -
UVA1374 快速幂计算 Power Calculus
知识点:深搜,迭代加深。原创 2024-04-04 22:02:12 · 242 阅读 · 0 评论 -
UVA10603 倒水问题 Fill
这个题其实就是最短路问题,关键是要建立图论模型,然后这个题就好做了,但是怎么想到建立最短路模型的那就只能多做题了,这个题的关键点除了建立图论模型之外,还有一个就是状态,一开始选择状态是3元组,但是根据题意,几个杯子倒水的时候,水是不会洒到外面的,所以水的总数是相同的,那么其实状态是二维的就可以了,数组一开始开的3维的大小,结果超时,改成二维的就过了,这个情况还是第一次遇到,查找原因只能是多组数据,这是需要注意的一个点。知识点:BFS,最短路,图论建模。原创 2024-04-04 03:17:18 · 279 阅读 · 0 评论 -
AcWing 164. 可达性统计
至于为什么是集合,我觉得最基本的原因是这个题是一个图,所以可以用集合(虽然还没学过离散数学,尤其是集合论与图论),对每个点,我们都用一个集合来表示这个点能到达的点,很显然拓扑排序最后的点只能到自己,倒数第二个点能到自己或者最后一个点,如果有边的话,那么这个题我们可以按照拓扑排序的逆序,从后向前推,每到一个点,求自身,与所有出边相连的点的集合求并集,那么就是当前点的可以到达的点的集合,最后输出每个点的集合的大小就行了,这是之前的超时的代码,但是我觉得对位运算的理解是有帮助的。原创 2024-04-04 01:09:44 · 361 阅读 · 0 评论 -
P1074 [NOIP2009 提高组] 靶形数独
然后这个题只用了上面两个优化就取得不错的时间复杂度,还有最优性剪枝,以及更高级,足以通过黑题数独的剪枝都没用,其实也不会黑题的数独,然而即使如此还是最优解比较靠前,所以只用把上面两个剪枝优化能理解清楚就行了。知识点:深搜,剪枝,位运算。原创 2024-04-03 18:23:22 · 245 阅读 · 0 评论 -
P1312 [NOIP2011 提高组] Mayan 游戏
这个题算是一个模拟题,首先需要了解题意,题目说的是搜索的深度恰好是n,没有说尽量最少的步数,而是说步数恰好是n,按照编程的习惯,我们把整个地图顺时针旋转90度来编程,知识点:模拟,深搜,剪枝。原创 2024-04-03 17:32:10 · 361 阅读 · 0 评论 -
UVA11212 编辑书稿 Editing a Book
这个题算是IDA*算法的练习题,和POJ的booksort基本是一样的,那个题的数据是16,但是限制是5层,这两个题仅仅是数据不一样但是方法是一样的,这个题首先就是估算一个状态的分支有多少,比如说有连着两块A和B,我们把A放到B的后面和把B放到A的前面是等价的,所以我们粘贴的时候,统一只往后面粘贴,然后枚举长度,起点的位置,可得到几种可选择的位置,这样以16为例,每个状态的分支是560,十分大,可以使用双向BFS,或者IDA*算法,知识点:深搜,迭代加深,IDA*原创 2024-04-02 22:49:12 · 223 阅读 · 0 评论 -
AcWing 187. 导弹防御系统
这个题进阶指南上面给的提示是迭代加深,个人感觉这个不是迭代加深,顶多算是迭代DFS,因为迭代加深是限制搜索的深度的,然而这个题我们求最小的导弹防御系统的个数,搜索的对象选取的是每个导弹,也就是说对于每个备选答案,我们都要判断是不是能搜索完所有的导弹,我们这里迭代的对象,既是答案,也会成为剪枝的条件,如果已经用完规定数目的导弹系统,那么就不往下搜索了,但是这样一想。最后是程序的实现,应该是和ACWing的不同的,但是也懒得看了,多开了两个数组,一个存当前序列的最后一个数,一个存当前序列是单调增加还是减的,原创 2024-04-02 03:15:04 · 288 阅读 · 0 评论 -
UVA211 多米诺效应 The Domino Effect
然后是深搜的时候如何找到要填数字的位置,这个很简单,因为我们需要所有的位置都填上数字,所以我们只要找到一个没有填数字的位置就行,然后看它四周是不是有能和他一起填数字的位置,如果没有,那么说明这个搜索分支是不会有答案的,也自然不会向下递归,这里需要注意的一个点是,我们每次填数字的时候也要判断一下这个数字是不是被填过了,因为可能初始地图几处地方都能填这个数字(1到28),而这1到28每个数字是只能填一次的,所以这里要判断一下,这样这个题就完成了。首先这个要建立一个映射关系,方便后来往地图上面填数字。原创 2024-03-31 19:50:31 · 210 阅读 · 0 评论 -
UVA1601 万圣节后的早晨 The Morning after Halloween
对于这个题,有两个需要注意的点,首先题目里面说了鬼的个数不超过3个,但是可能是1个或者两个,我们为了程序写起来方便,当鬼的个数不足3个时候,要把他补成3个,这是同一写法,类似的地方还有我们写链表的时候要加上头节点尾结点,用对顶堆维护中位数的时候提前先往两个堆里面分别加入两个堆都不可能达到的数,这样降低代码难度,减少边界情况分类讨论,将所有的情况统一。知识点:BFS,双向BFS。原创 2024-03-31 14:41:33 · 193 阅读 · 0 评论 -
UVA12166 修改天平 Equilibrium Mobile
这个题是二叉树的练习题,但是与其说是一个二叉树的题,倒不如说是思维题,做个题主要就是你要看出那个结论,看出来结论了就很好做了,感觉是个思维题,和初学者学的二叉树的递归几乎关系不大,也就是用到了深度,这个结论要是想不起来真的不知道这个题要怎么做。知识点:二叉树,思维。原创 2024-03-28 18:05:10 · 212 阅读 · 0 评论 -
立体八数码问题 Cubic Eight-Puzzle
知识点:深搜,迭代加深,估价函数。原创 2024-03-11 14:01:11 · 183 阅读 · 1 评论 -
1027 Larry and Inversions
【代码】1027 Larry and Inversions。原创 2024-03-09 02:49:03 · 210 阅读 · 0 评论 -
古代象形符号 Ancient Messages
这个题还是有一点麻烦的,写了37分钟,首先我们要把输入的16进制转化为2进制的01,这个方法各有不同,然后就是处理了,首先第一次dfs,我们把图里面不属于字母的空白部分都标记,这里运用了补一圈的思想,只要从边界深搜一次就能把所有的不属于字母的空白给标记了,然后是第二次深搜,给每个01标记上它属于第几个字母,第三次深搜就是遍历字母的空白块,然后累加看看第几个字母有几个空白块,最后通过有几个空白块来确定图像里都是什么字母。知识点:连通块的划分。原创 2023-12-26 12:30:07 · 447 阅读 · 0 评论 -
UVA489 刽子手的游戏 Hangman Judge
这个是一个简单的字符串模拟的题,用数组散列模拟很简单,就是需要注意一下题意,猜一个前面已经猜过的数,如果那个数是正确的,那么错误的次数加一,如果那个数本身就是不正确的,那么错误的次数不需要加一,只要把这个弄明白了,这个题就过了,这个也是我看洛谷的讨论区看的,以后做题还是先要看一下讨论区有没有题意的翻译或者提醒。原创 2023-02-08 01:32:11 · 269 阅读 · 0 评论 -
UVA810 筛子难题 A Dicey Problem
对了,最后补充一下题意,地面是0的话,说明这里什么也没有,就是障碍,不能走,如果是-1,那么不管筛子是几都可以走,如果是正数,那么只有移动前筛子的顶部的数字和它相同才能走,这个题的输出也很麻烦,但是这些不是难点所在。这个题算是绿题里面稍微麻烦一点的题,或者说是一道当之无愧的绿题,这个题是一个筛子的广搜,里面也有含量很高的模拟成分,原创 2023-02-07 22:46:09 · 164 阅读 · 0 评论 -
UVA10125 Sumsets
这个题和入门经典的一个例题挺像的,首先很容易想到中途相遇的思想,把c移项,然后两两数就会产生1e6的情况,时间复杂度应该是可以接受的,但是这里需要注意的是,两个数相加只会出现一种情况,两个数相减那么会出现两种情况,又因为两数相加是正的,那么我们其实只要记录是正的数就行了,但是两种情况是都要枚举的,这样,输入处理完了,我们对记录相加的按照权值排序,然后对相减的一组,按照被减数从大到小排序,这样找到答案就能退出了,最后执行的过程是枚举加二分,我们遍历二分的找符合的情况,知识点:二分,枚举,排序。原创 2023-02-07 17:49:31 · 171 阅读 · 0 评论 -
UVA11997 K Smallest Sums
比较经典的堆的练习题,运用了数学归纳法的思想,同时也属于我自己总结的特殊动态第k大问题,思路是我们首先拿前两个序列合并,得到一个序列,然后再去和第3个合并,以此类推,这样最后得到的一定是最优解,至于合并的时候,李煜东的写法实际上比较难理解,适合新手的是我这种一次入堆一列的写法,只要画个矩阵就能理解了,真的比李煜东讲的方法好太多。原创 2023-02-02 11:01:18 · 105 阅读 · 0 评论 -
AcWing 241. 楼兰图腾
树状数组还没有学,先用线段树来写,是权值线段树的最基本的应用。原创 2023-02-01 15:27:46 · 81 阅读 · 0 评论 -
P3368 【模板】树状数组 2
暂时没有学树状数组,先用线段树来写。原创 2023-01-31 09:56:47 · 85 阅读 · 0 评论