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