洛谷
文章平均质量分 79
sakulaaaa
这个作者很懒,什么都没留下…
展开
-
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 = M A2+x1-x2 = M A3+x2-x3 = M ... An+xn-1-xn = M 而最后答案就是求min(x1+x2+...+xn)x1原创 2021-08-10 12:26:19 · 122 阅读 · 0 评论 -
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 · 113 阅读 · 0 评论 -
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 · 95 阅读 · 0 评论 -
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 · 190 阅读 · 0 评论 -
洛谷P1115 最大子段和 (分治法)
题目描述 给出一个长度为n的序列a,选出其中连续且非空的一段使得这段和最大。 输入格式 第一行是一个整数,表示序列的长度n。 第二行有n个整数,第i个整数表示序列的第i个数字 ai。 输出格式 输出一行一个整数表示答案。 输入输出样例 输入 #1 7 2 -4 3 -1 2 -4 3 输出 #1 4 说明/提示 样例 1 解释 选取[3, 5] 子段 {3,−1,2},其和为4。 数据规模与约定 对于 40%的数据,保证 n≤2×10^3。 ...原创 2021-07-29 12:51:47 · 287 阅读 · 0 评论 -
洛谷P1111 修复公路
题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车。政府派人修复这些公路。 题目描述 给出A地区的村庄数N,和公路数M,公路是双向的。并告诉你每条公路的连着哪两个村庄,并告诉你什么时候能修完这条公路。问最早什么时候任意两个村庄能够通车,即最早什么时候任意两条村庄都存在至少一条修复完成的道路(可以由多条公路连成一条道路) 输入格式 第1行两个正整数N,M 下面M行,每行3个正整数x, y, t,告诉你这条公路连着x,y两个村庄,在时间t时能修复完成这条公路。 输出格式 如果全部公路修原创 2021-07-24 18:11:16 · 80 阅读 · 0 评论