url: https://www.luogu.com.cn/problem/P3110tag:USACO14DEC,最短路,bfs,USACO,2014思路:求三遍最短路,分别是正着求Bessie 和 Elsie 到每个点的最短路,和逆着求终点n到每个点的最短路,然后枚举看从哪个点开始一起走(Bessie 可以背着 Elsie 走)然后到终点的能量…
url: https://www.luogu.com.cn/problem/P1120tag: 枚举,搜索,剪枝,dfs思路:先从大到小排序,并计算全部木棍长度的和。之后从最长的木棍长开始一直到和的一半枚举,作为原来木棍的长度。然后拿到这个原来的长度之后dfs一下看在有限段的情况下能不能拼凑出全部木棍,可以就输出。最后枚举完全部可能结果后都没答案,…
url: https://www.luogu.com.cn/problem/P4667tag:BalticOI 2011,最短路,双端队列,bfs思路:用双端队列的bfs,每次走到下一步的时候判断方向是否相同,相同且更新之后路径变小就插到队列前面,不同且更新之后路径变小就插到队列后面。判断是否无解就判断一下终点横纵坐标和是否为奇数,为奇数就无解,因…
url: https://www.luogu.com.cn/problem/P1119tag:图论,枚举,最短路思路:这道题可以用floyd算法来做,每次询问,都将当前这个时间可以重建完的村庄用floyd算法更新一下所有点的最短路。最后判断一下这个询问的两个村庄是否重建完以及是否可以联通,如果重建完并且联通就输出最短路,否则输出-1代码:#incl…
url: https://www.luogu.com.cn/problem/P2195tag:树的直径,树形DP,dfs,搜索,并查集,图论思路:先用树形DP求出每棵树的直径,并用并查集维护联通情况。用数组c来维护树的直径。对于询问1,直接输出直径,对于询问2,如果不在一个集合中,直径可能是原来两棵树的直径和 + 1,和原来两棵树的直径取一个最大值…
url: https://www.luogu.com.cn/problem/P1731tag:NOI1999,dfs,剪枝,搜索思路:使用dfs和剪枝。dfs有四个参数,分别表示第几层,剩余体积,当前的面积,剩余层数。剪枝是有两个,第一个,如果当前的表面积加上之后最小的面积大于当前的面积,就return,第二个,之后最大的体积小于剩余的体积就ret…
url: https://www.luogu.com.cn/problem/P5194tag:USACO05DEC,dfs,剪枝,搜索思路:先按照从大到小排序,然后计算前缀和。之后每次dfs,先判断上一个累加的结果有没有超过w,如果有就return,否则就更新res,然后判断是不是所有点都判断完了,如果是,则return。之后计算一下剩余的值之和,…
url: https://www.luogu.com.cn/problem/P1433tag: 动态规划,状压DP,dfs,记忆化搜索思路:可以是状态压缩dp,也可以是用dfs加上记忆化搜索。这里就用dfs加上记忆化搜索。用二进制来存储每一种状态,每次访问一个点就将那个点异或一下。最后每次都是返回一个答案。dp中存的是从x点开始走走到最后一个点的最…
url: https://www.luogu.com.cn/problem/P1032tag:NOIP2002 提高组,字符串,bfs思路:因为是求最少的变换次数,所以可以用bfs。每次搜索都遍历字符串的每一个位置,将可以替换的地方都替换,然后判断是否出现过,没有出现过就加入队列。最后第一次出现字符串b的时候步数就是答案。代码:#include &…
url: https://www.luogu.com.cn/problem/P2672tag:NOIP2015 普及组,贪心,线段树,树状数组,前缀和,动态规划。思路:思路都是用贪心的策略,有两种情况,一种是取前x个a最大的客户,第二种是取前x - 1个a最大的客户,然后再从第i到n个中选择距离最远的一个去替换第x个a最大的客户,两种情况取最大值输…