随笔分类 -  基础算法—— DFS

摘要:题目传送门 考虑一条边所做的贡献,为这条边两端的树节点的数目之差的绝对值,因此我们可以搜索,随便钦定一个点为根,然后记录一下每个点子树的大小,那么对于每条边所做的贡献,就是w[i]*abs((n-siz[v[i]])-siz[v[i]]),其中i为边的编号,abs为取绝对值,siz[x]表示x的子树 阅读全文
posted @ 2019-10-24 08:15 shao0320 阅读(141) 评论(0) 推荐(0) 编辑
摘要:这种最优解和深度有关的,可以使用迭代加深对dfs进行优化。 但显然普通的IDDFS效率还是不能满足这题的要求,因为直接枚举分母明显是不行的(可能达到1e7),那么我们可以对IDDFS进行上下界剪枝。 下界优化1:我们可以发现,题目要求升序排列,因此可以从上次分母+1开始枚举 下界优化2: 我们发现枚 阅读全文
posted @ 2019-10-24 08:05 shao0320 阅读(334) 评论(0) 推荐(0) 编辑
摘要:题面传送门 我们发现只有25个格子,应该是可以用爆搜过掉这道题的。但是裸的dfs时间复杂度过高,我们要进行相应的优化。 首先,由于马的数量过多,我们应该选择让空格“走”。 接下来我们发现这道题又很明显的一个限制条件,最多不能超过15步,所以我们可以使用迭代加深进行优化,所谓的迭代加深搜索,本质上还是 阅读全文
posted @ 2019-10-24 07:46 shao0320 阅读(188) 评论(0) 推荐(0) 编辑
摘要:题意简述:给定一颗N个点边带权的树,再给定M条链,问将树上的某条边权值改为0后,这些链中最长的至少有多长。 由于答案显然具有单调性,因此可以考虑二分答案。 二分答案后就变成了这样一个问题:将一条边的边权变为0后,是否可以让所有m条路径中每条的权值都小于mid; 这个问题乍一看还是没啥思路 阅读全文
posted @ 2019-09-28 20:43 shao0320 阅读(203) 评论(0) 推荐(0) 编辑
摘要:一、前言 本博客适合已经学会欧几里得算法的人食用~~~ 二、扩展欧几里得算法 为了更好的理解扩展欧几里得算法,首先你要知道一个叫做贝祖定理的玄学定理: 即如果a、b是整数,那么一定存在整数x、y使得ax+by=gcd(a,b)。 通俗的说就是:如果ax+by=c有解,那么$c\%gcd(a, 阅读全文
posted @ 2019-09-15 21:34 shao0320 阅读(756) 评论(0) 推荐(0) 编辑
摘要:同样是搜索经典题。 优化并不多,只需在当前步数已经大于目前答案时剪枝就可以了。 此题重点在于如何判断第k个矩形能不能选。 设矩形i的左上坐标为i(squ[i].upx,squ[i].upy),右下角坐标为i(squ[i].dox,squ[i].doy)。则判断k号矩形可以涂的条件为: if(!vis 阅读全文
posted @ 2019-07-11 21:50 shao0320 阅读(252) 评论(0) 推荐(0) 编辑
摘要:经典搜索题。 考虑以下9种优化 1)按木棍长度排序,使得较大长度的木棍被较早的选出。 2)只找能够整除的木棍长度,因为不能被sum整除一定不会出整数根,自然也就不是最优解。 3)枚举木棍长度时只需从最大的木棍长度(拼出的木棍长度不会小于最大的长度也不会大于总长度)枚举至总和的二分之一。如果还没有出解 阅读全文
posted @ 2019-07-11 21:31 shao0320 阅读(198) 评论(0) 推荐(0) 编辑
摘要:题目传送门 今晚闲游洛谷,在图论中发现了这独树一帜的记忆化搜索。看到这道题,第一感受就是DFS,每一个点DFS一遍,如果能更新就更新,但是这样的时间复杂度是O(nm),对于1≤N,M≤105的数据显然是承受不住的,会T飞掉~ 究其原因,是因为不断地更新,浪费了大量的时间。有没有改进的方法???答案是 阅读全文
posted @ 2019-06-10 20:12 shao0320 阅读(226) 评论(0) 推荐(0) 编辑
摘要:题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低。但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“靶形数独”,作为这两个孩子比试的题目。 靶形数独的方格同普通数独一样,在 9 格宽×9 格高的大九宫格 阅读全文
posted @ 2019-05-25 15:41 shao0320 阅读(220) 评论(0) 推荐(0) 编辑
摘要:题目描述 无向连通图G有n个点,n-1 条边。点从1到n依次编号,编号为i的点的权值为W_i ,每条边的长度均为 1。图上两点(u,v) 的距离定义为 u 点到 v 点的最短距离。对于图 G 上的点对 (u,v),若它们的距离为 2,则它们之间会产生Wv*Wu的联合权值。 请问图 G上所有可产生联合 阅读全文
posted @ 2019-05-20 19:55 shao0320 阅读(233) 评论(0) 推荐(0) 编辑
摘要:题目描述 有 n 个同学(编号为 1 到 n )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti​ 的同学。 游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能 阅读全文
posted @ 2019-05-14 19:43 shao0320 阅读(168) 评论(0) 推荐(0) 编辑
摘要:题目描述 小L热衷于undercards. 在undercards中,有四个格子。每个格子要么是空的,要么住着一只BigBob。 每个BigBob有一个不超过k的血量;血量减到0视为死亡。那个格子随即空出。当一只BigBob受到伤害后,假如它没有死亡且剩余血量为t,它会从左数第 一个空格处召唤一只血 阅读全文
posted @ 2019-05-08 20:15 shao0320 阅读(926) 评论(1) 推荐(2) 编辑

****************************************** 页脚Html代码 ******************************************
点击右上角即可分享
微信分享提示