02 2018 档案
摘要:回顾一下dfs与bfs的使用,由于二者都需要避免走重复的路,所以二者都需要对数组进行标记 而二者的标记操作的不同点是 dfs会对数组的标记进行清除(包含两种标记,一种对形参变量的标记,这个清除是返回上一层时自动清除,另一种是对全局变量的标记,这个清除是要手动进行,在上一个dfs()中上面进行标记,在
阅读全文
摘要:https://www.nowcoder.com/acm/contest/77/A 简单的树状数组 具体操作c[100005]用于记录区间内已经出现数字的个数,用add()更新区间内已经出现的数字个数,用sum()来求出该数出现之前的数字个数之和
阅读全文
摘要:之前水过一道极水的道路建设问题,就是判断最少还需要建设多少条公路能使全部城市都直接或间接相连 首先要知道直接或间接相连的道路最少是n-1条(如果一共有n个城市不相连),那么解决上述问题就是直接通过并查集来看已经有多少个城市相连了 如果知道上述n个城市需要n-1条路的性质,那么就很容易判断某些需要判断
阅读全文
摘要:树状数组的关键就是三个函数:(主要是利用树状数组与二进制之间的性质进行跳跃式的操作(具体性质百度即可)) https://www.nowcoder.com/acm/contest/77/B 1、int lowbit(int x); 2、void add(int x,int y); 3、int sum
阅读全文
摘要:该算法思想就是 1)首先找离起点最近的点 2)然后对该点进行标记,并且对与该点相邻的点进行松弛(也就是更新周围点离起点的距离最小值) 3)继续找更新之后的图中离起点最近的未被标记的点 具体的实现方式有两种: 方式一时间复杂度是O(n^2),具体实现方式是通过两个for循环实现(其中内层循环负责找最近
阅读全文
摘要:方式一:结构体内部的重载 方式二:结构体外的重载
阅读全文
摘要:技巧一:预处理。典型问题就是星图问题,https://www.nowcoder.com/acm/contest/64/A 由于光线只沿直线走,所以可以直接对地图进行预处理 (注意这个问题的性质,就是光线只能直线前进(也就是过程可控),也就是不像走迷宫那样需要选择方向并且前后牵连(也就是上下选择不牵连
阅读全文
摘要:取模本身的性质:(之前有一篇博客写过)三则运算(+,-,*)过程中的取模与最后的取模一样(前提是最后不超long long(或int) 范围,所以为防止超范围,直接对三则运算中的过程取模) 然后就是ACM中的要求取模,,,,即要求如果结果超过某个值就以某值取模,,,,这种题目只要是+,-,* 就直接
阅读全文
摘要:关于结构体内的函数,太难的尚且不会用,下面是一个简单一点的结构体内函数的代码 定义这样一个结构体函数之后就能像如下这样使用了 以上为结构体内的简单函数,下面重点来了,关于bfs找最短路由于需要避免走回头,所以需要对走过的路进行标记, 但进行标记之后就不能很好地解决另一种类型的最短路问题了 >有钥匙和
阅读全文
摘要:dfs通过递归将每种情景分割在不同的时空,但需要对每种情况对后续时空造成的痕迹进行清理(这是对全局变量而言的,对形式变量不需要清理(因为已经被分割在不同时空)) bfs由于不是利用递归则不能分割不同的时空,但其利用队列将不同时空下的步骤在时间上进行同步(但队列内部的并不都是同一时间的) 但必须要区分
阅读全文
摘要:dfs由于是利用递归进行遍历,所以每种情况在时空上不会出现冲突,所以可以利用数组将每种情况的各个元素的值进行存储(即存储当前位) 而bfs由于并不是利用递归,不能将每种情况的值进行不冲突地存储,但由于其在遍历过程会把走过的地方进行标记,所以每个位置的前驱唯一,所以在存储时可以通过存储每一位的前一位达
阅读全文
摘要:取模的一个简单性质:加法,减法,乘法,以及三则的混合运算在过程中取模与算出最终结果取模结果一样 这个性质使一些超出long long 的数据便于被记录存储并运算: 首先用string s ; cin >> s;来写入数据,读成字符串之后虽然进行了记录,但并不能很方便地进行运算与使用, 这时使用for
阅读全文
摘要:https://www.nowcoder.com/acm/contest/42/F 首先由于是单一解问题,所以使用返回值类型为bool的dfs 然后为了保证dfs的效率性,应该把加数dfs放在前面,不加数的dfs放在后面(避免一直加0至尽头从而使递归低效) 最后就是由于加数放在前面,所以在加数的为假
阅读全文
摘要:dfs的返回值类型可以是int 或者 void 、bool 由void 与 int 作为返回值类型的dfs在得到解之后不能立即返回,即使你加上语句if(key)return;也要在得到解之后一点点返回上一层,并不用立即返回 而bool 作为返回值时,使用if(dfs(x,i))return true
阅读全文

浙公网安备 33010602011771号