随笔分类 - 算法
摘要:POJ 3268 Silver Cow Party 题意:给一个有向图及终点x,求各点与x之间往返最短路之和的最大值 思路:floyd当然是最吼的……但点太多,T了。于是反向建边,这样就可以通过求x的dij两次得到各点往x的最短路和从x返回各点的最短路。代码写得过于繁琐了。 struct node 
        阅读全文
                
摘要:POJ 1502 MPI Maelstrom 题意:给一个无向图,求从结点1到其他结点的最短路中的长度最大值 思路:裸的Dijkstra……记得先cin>>n再初始化,居然在这个弱智错误上卡了10分钟。atoi()在数字与字符混合输入这种情况好用,用来将一个字符串转为整型。 struct node 
        阅读全文
                
摘要:POJ 2387 Til the Cows Come Home 题意:给一个无向图,求从结点n到结点1的最短路 思路:裸的Dijkstra……邻接矩阵的话就在原来有向图的基础上多一次AddEdge操作就完事了 const int INF = 100000+1; const int maxn = 10
        阅读全文
                
摘要:1.【板子题】POJ 2387 Til the Cows Come Home 2.【最小生成树】POJ 2253 Frogger 3.【最大生成树】POJ 1797 Heavy Transportation 4.【反向建边】POJ 3268 Silver Cow Party 5.【判正环】Curre
        阅读全文
                
摘要:Floyd算法 计算含负权的图上的多源最短路,原理是动态规划。 设$D_{i,j,k}$为从$i$到$j$的只以$(1...k)$集合中的结点为中间结点的最短路的长度。 1.若最短路经过点$k$,则$D_{i,j,k}=D_{i,k,k-1}+D_{k,j,k-1}$; 2.若最短路不经过点$k$,
        阅读全文
                
摘要:Dijkstra算法 (gif来源:戴克斯特拉算法 - 维基百科) 计算正权图上的单源最短路,同时适用于有向图与无向图 ①给源点标记$d[0]=0$,其他$d[i]=INF$ ②循环:每次都从d值最小的结点$x$开始,对于从$x$出发的所有边$(x,y)$,对于未被访问过的结点$y$,更新$d[y]
        阅读全文
                
摘要:树: 连通且不含环的图 生成树:给定无向图G=(V,E),连接G中所有点,且边集是E的子集的树 最小生成树(MST):权值最小的生成树 Kruskal算法 ①将所有边按从小到大排列 ②依次考察每条边$(u,v)$。若$u$和$v$在同一个连通分量中,加入$(u,v)\(会成环,因此不能选择;**否则
        阅读全文
                
摘要:"B Ternary String" 题意:给定一段只包含“1”“2”“3”的字符串,求其中包含三个数字的连续子串的最小长度。 思路:不断更新各数字的最近一次出现的位置,再用其中最大下标与最小下标计算这个合法子串的长度,再不断更新答案即可。 就,注意这种求最优解的题,有时候只需要在遍历过程中不断更新
        阅读全文
                
摘要:"A Alarm Clock" 模拟,要注意的点都在注释里了
        阅读全文
                
摘要:"A Alarm Clock" "B Ternary String" "C1 Simple Polygon Embedding"
        阅读全文
                
摘要:"C1 Simple Polygon Embedding" 题意:给定n,求能包围(即正多边形的所有点均在正方形的里面或者边上)正2 n边形的正方形的最小面积。 思路: $n$为偶数时,正多边形必有四条边分别和正方形的四条边重合,根据这个算一下即可: $ans=2 (\frac{\frac{1}{2
        阅读全文
                
摘要:"D Game With Array" 题意:构造一个长度为$N$,和为$S$的正整数序列,问能不能找到一个1~S的数$K$,使得数组里找不出一个子序列的和为$K$或者$S K$ 思路:构造一个前$N 1$项均为1,第$N$项为$S (N 1)$的数组即可。此时只要$S (N 1) N$,取$K=N
        阅读全文
                
摘要:"A Sequence with Digits" $题意:给定a_1,递推式如下:a_n=a_{n 1}+max\{{a_{n 1}\}} min\{{a_{n 1}\}},其中max\{{a_{n 1}\}}/min\{{a_{n 1}\}}表示$$a_{n 1}的各个位数中最大/最小的那个。给定
        阅读全文
                
摘要:"B. Same Parity Summands" "D. Alice, Bob and Candies" "E. Special Elements" "G. Special Permutation"
        阅读全文
                
摘要:树状数组 求和 $C[i]$表示数组$A$中的一段连续的区间的和,具体是哪一段,由下式确定: \(C[i]=A[i-2^k+1]+A[i-2^k+2]+...+A[i]\) 其中$k$为$i$的二进制数中从最低位到最高位连续零的长度,如对于$8(1000)$,\(k=3\) $SUM[i]$表示数组
        阅读全文
                
摘要:"F. Decreasing Heights" 题意: 给定一个$n m$的地图,每个格子有初始高度。只能向右或向下移动,且要求第$i+1$步的高度必须比第$i$步恰好高$1$。每次操作可以使得任意一个格子的高度减$1$。问最少需要几次操作,使得地图中存在由$(1,1)$到$(n,m)$的路径。 思
        阅读全文
                

浙公网安备 33010602011771号