- 博客(9)
- 收藏
- 关注
原创 ②DFS深度优先搜索(基础)
1.介绍 深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。2.图例对于这样一个图来说,假设起点为1,则深度优先遍历的遍历结果为1->2->4->5->3->6解释因为DFS搜索是对每一个分支路径深入到不能深入为止所以第一步:从1->2->4,然后到了叶子节点,不能再深入了...
2021-10-09 18:20:38 141
原创 ①辗转相除法求最大公约数
辗转相除法又称为欧几里得算法,用于计算两个非负整数a和b的最大公约数(Greatest Common Divisor),简写为gcd,其计算的公式为gcd(a,b)=gcd(b,a%b)。辗转相除法正确性证明如下(参考百度百科):证法1:证明gcd(a,b)=gcd(b,a%b),不妨假设a>b,且r=a%b,且r!=0设a=kb+r(a,k,b,r都为正整数且r!=0)假设d是a和b的一个公约数,记作d|a,d|b,即a和b都可以被d整除而r=a-kb,两边同时除以d有r/d
2021-10-05 21:16:09 650
原创 UVA11300 Spreading the Wealth 分金币 C++ (数学推导)
参考算法竞赛入门经典训练指南/*最后每个人的金币:M = (A1+A2+...+An)/n(设当前每个人的金币为Ai)设xi表示i给i+1传递给了xi个金币(xn表示n给1传递了xn个金币)为什么只表示第i给人给第i+1个人的金币数量?因为就算是i+1给i x个金币也可以表示i给i+1 (-x)个金币那么每个人都满足方程组:A1+xn-x1 = MA2+x1-x2 = MA3+x2-x3 = M...An+xn-1-xn = M而最后答案就是求min(x1+x2+...+xn)x1
2021-08-10 12:26:19 160
原创 UVA1395 苗条的生成树 Slim Span(克鲁斯卡尔算法,并查集)C++
kruscal模板题,思路参考刘汝佳算法竞赛入门经典(第2版)例11-2#include<iostream>#include<cstdio>#include<set>#include<cstring>#include<vector>#include<algorithm>using namespace std;const int maxn = 100 + 7;int fa[maxn];int m, n;int
2021-08-06 15:14:15 157
原创 UVA11584 划分成回文串 Partitioning by Palindromes(回文串,dp)C++实现
学习算法竞赛的新手,思路参考紫书例9-7,具体操作见注释...#include<iostream>#include<cstring>using namespace std;const int maxn = 1000 + 7;bool s[maxn][maxn];//s[i][j]表示从下标i到下标j这个小区间里是否为回文串int dp[maxn];//dp[i]表示下标0到下标i的最少回文串值/*dp[i]=min{dp[j]+1|s[j+1~i]是回.
2021-08-03 17:32:53 141
原创 UVA1152 和为0的4个值 4 Values whose Sum is 0
题目描述给出四个数组 A,B,C,D,每个数组中有n个整数。求有多少组 i,j,k,l满足 Ai+Bj+Ck+Dl=0。输入格式本题有多组测试数据。第一行一个正整数T,表示数据组数。对于每组数据:第一行一个整数n。接下来n行,一行四个整数,分别表示 Ai,Bi,Ci,Di。输出格式共 2×T行。对于每组数据:第一行一个整数,表示该组测试数据的答案。接下来输出一个空行。数据范围1≤n≤4000。数组中所有数的绝...
2021-07-29 23:40:58 232
原创 洛谷P1115 最大子段和 (分治法)
题目描述给出一个长度为n的序列a,选出其中连续且非空的一段使得这段和最大。输入格式第一行是一个整数,表示序列的长度n。第二行有n个整数,第i个整数表示序列的第i个数字 ai。输出格式输出一行一个整数表示答案。输入输出样例输入 #172 -4 3 -1 2 -4 3输出 #14说明/提示样例 1 解释选取[3, 5] 子段 {3,−1,2},其和为4。数据规模与约定对于 40%的数据,保证 n≤2×10^3。...
2021-07-29 12:51:47 367
原创 洛谷P1111 修复公路
题目背景A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车。政府派人修复这些公路。题目描述给出A地区的村庄数N,和公路数M,公路是双向的。并告诉你每条公路的连着哪两个村庄,并告诉你什么时候能修完这条公路。问最早什么时候任意两个村庄能够通车,即最早什么时候任意两条村庄都存在至少一条修复完成的道路(可以由多条公路连成一条道路)输入格式第1行两个正整数N,M下面M行,每行3个正整数x, y, t,告诉你这条公路连着x,y两个村庄,在时间t时能修复完成这条公路。输出格式如果全部公路修
2021-07-24 18:11:16 116
原创 洛谷 P1706全排列问题
题目描述按照字典序输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。输入格式一个整数n。输出格式由1 ∼n组成的所有不重复的数字序列,每行一个序列。每个数字保留5个场宽。输入输出样例输入 #13输出 #1 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1...
2021-07-24 18:00:41 597 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人