Graph、DFS、BFS】的更多相关文章

Codeforce 685 B. Kay and Snowflake 解析(思維.DFS.DP.重心) 今天我們來看看CF685B 題目連結 題目 給你一棵樹,要求你求出每棵子樹的重心. 前言 完全不知道我怎麼想到的 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 首先會感覺是樹狀DP,並且狀態是每個子樹的重心. 在建重心剖分樹的時候,我們找根為\(v\)的樹的重心的方法是看看目前節點有沒有大小大於目前樹的一半(\(size[v…
Codeforce 500 D. New Year Santa Network 解析(思維.DFS.組合.樹狀DP) 今天我們來看看CF500D 題目連結 題目 給你一棵有邊權的樹,求現在隨機取\(3\)點,求這三點互相距離總和的期望值. 前言 今天寫的題目都是看解答就會寫,原本就沒有的自信心又要更低了 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 \(3\)個點要考慮的事情太多了,首先只要注意到以下一件事,那麼其他的事情就和…
Codeforce 1276 B. Two Fairs 解析(思維.DFS.組合) 今天我們來看看CF1276B 題目連結 題目 給一個連通圖,並給兩個點(\(a,b\)),求有多少點對使得:任一路徑都要經過\(a,b\)這兩點. 想法 首先因為不一定是棵樹,所以總覺得LCA用不到.而這個圖又很大,因此感覺應該是要從\(a,b\)這兩點出發做點事情,例如DFS. 當開始這樣想以後,會發現我們其實可以把所有點分成三種類型: \(a,b\)都走得到的 只有\(a\)走得到 只有\(b\)走得到 這樣…
Codeforce 1401 D. Maximum Distributed Tree 解析(思維.DFS.組合.貪心.DP) 今天我們來看看CF1401D 題目連結 題目 直接看原題比較清楚,略. 前言 這次比賽被第C.題搞到剩20分鐘可以寫D.這題,比賽時沒寫出來,比完了以後花了一個多小時Debug才De出來Orz. 想法 要注意到,題目中的distribution index實際上就是把每條路對於每個點對互相拜訪時,會被經過幾次,乘個權重,全部加起來.例如說\((u,v)\)這條邊,\(u\…
DFT.DTFT.DFS.FFT.FT.FS之间的关系 FT和FS是研究连续信号的,在数字信号处理中不涉及. 主要是前四种的关系: DFT(Discrete Fourier Transform):离散傅里叶变换 DTFT(Discrete-time Fourier Transform):离散时间傅里叶变换 DFS(Discrete Fourier Series):离散傅里叶级数 FFT(Fast Fourier Transform):快速傅里叶变换 首先来说图(1)和图(2),对于一个模拟信号,…
graphdfsbfs 1.clone graph2.copy list with random pointer3.topological sorting4.permutations5.subsets6.n queens7.subsetsII 8.palindrome partitioning9.combination sum10.combination sumII11.word ladder 12.word ladderII 克隆图:先克隆点,再克隆边. 宽度优先搜索有模板,以后告诉了图中的一…
这类题是最简单的了都是一个套路,不像动态规划一类题一个套路,没做过就是不会也极难想出来. 一.BFS 解决的问题:用来初始点解决到指定点的最短路径问题,因为图的每一层上的点到初始点的距离相同.(注意是无权图) 在程序实现 BFS 时需要考虑以下问题: 队列:用来存储每一轮遍历得到的节点: 标记:对于遍历过的节点,应该将它标记,防止重复遍历. 下面这两个题都是比较典型的广度优先题 1091. 二进制矩阵中的最短路径 这题笔者超时了百思不得其解. class Solution { public in…
Graph.java package Graph; import LinearLIst.bag.Bag; import edu.princeton.cs.algs4.In; public class Graph { private final int V; //顶点数目 private int E; //边的数目 private Bag<Integer>[] adj; //邻接表 /*创建一个包含V个顶点但是不包含边的图*/ public Graph(int V){ this.V=V; thi…
一 广度优先遍历(BFS) //广度优先遍历二叉树,借助队列,queue public static void bfs(TreeNode root){ Queue<TreeNode> queue = new LinkedList<TreeNode>(); //队列需要使用linkedlist来初始化 if(root == null) return; queue.add(root); while(!queue.isEmpty()){ TreeNode node = queue.pol…
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1497 解决:406 题目描述: 有一个6*6的棋盘,每个棋盘上都有一个数值,现在又一个起始位置和终止位置,请找出一个从起始位置到终止位置代价最小的路径:     1.只能沿上下左右四个方向移动     2.总代价是没走一步的代价之和     3.每步(从a,b到c,d)的代价是c,d上的值与其在a,b上的状态的乘积     4.初始状态为1 每走一步,状态按如下公式变化:(走这步的代价%4)+1. 输入: 第一行有一个正整数n,表示有…