
算法设计与分析
算法设计与分析
kgduu
这个作者很懒,什么都没留下…
展开
-
POJ3522 Slim Span(Kruskal)
给定一个n个顶点,m条边的无向图, 求最大边减去最小边的值最小的生成树。原创 2024-01-21 16:45:43 · 427 阅读 · 0 评论 -
UVa11478 Halum(BellmanFord)
给定一个n个点,m条边的有向图,每条边有一个权值。每次选择一个结点v和一个整数d,把以v为终点的边的权值减d,把以v为起点的边的权值加d,最后要求所有边的权值的最小值非负且最大。原创 2023-12-03 23:26:55 · 140 阅读 · 0 评论 -
UVa11090 Going in Cycle!!(BellmanFord)
给定一个包含n个顶点,m条边的加权有向图,求平均权值最小的回路。原创 2023-11-12 21:33:08 · 187 阅读 · 0 评论 -
UVa12661 Funny Car Racing(Dijkstra)
给定n个点,m条边,起始点s,目标点t,求从起点s到终点t的最短距离。已经道路上的边e是每隔ea秒开启,再隔eb秒关闭,通过时间为et。原创 2023-11-05 11:01:16 · 188 阅读 · 0 评论 -
UVa1078 Steam Roller(Dijkstra)
给出一个图,边值不等于0的表示通过这条路所需要的时间,有如下一些约束问从起点到终点所需要的最短时间。原创 2023-10-29 22:47:57 · 209 阅读 · 0 评论 -
UVa658 It’s not a Bug, it’s a Feature!(Dijkstra)
给出一个包含n个bug的应用程序,以及m个补丁,每个补丁使用两个字符串表示,第一个串表示补丁针对bug的情况,即哪些bug存在,以及哪些bug不存在,第二个串表示补丁对bug的修复情况,即修复了哪些bug,以及引入哪些bug。补丁还包含修复的时间。问修复这些bug所需要的最短时间。原创 2023-10-15 22:16:42 · 613 阅读 · 0 评论 -
UVa10537 The Toll! Revisited(Dijkstra)
在无向图中,经过结点时,需要交纳入口通行费,如果结点类型为城镇,需要交纳n/20个物品,如果结点类型为乡村时,只要交纳1个物品,问从起点到终点, 至少需要带多少个物品。原创 2023-09-24 22:57:29 · 249 阅读 · 0 评论 -
UVa1416 Warfare And Logistics(Dijkstra)
给出包含n个结点,m条边的无向图,每条边上有一个正权,求每对结点的最短路径之和,以及去掉一条边后,要求每对结点的最短路径之和最大。原创 2023-09-17 16:27:30 · 134 阅读 · 0 评论 -
UVa11374 Airport Express(Dijkstra)
思路:如果选择商业路线为从u到v,则需要从s->u,u->v,v->e点的路径最短。使用Dijkstra计算出从s点到其它各点,以及从e点到其它各点的最短路径,然后遍历商业路线u,v,选取从s->u,u->v,v->e点中路线最短的。题意:给出经济路线以及商业路线,在给出起始点s,终止点e,在只能使用其中一个商业路线 的情况下输出最短路径。原创 2023-09-03 14:04:01 · 317 阅读 · 0 评论 -
UVa10048 Audiophobia(floyd)
给出一个图,图中的边表示从点u到点v路径上的噪音。给出q个查询,问从u到v所经路径上的最小噪音。原创 2023-08-19 21:49:36 · 386 阅读 · 0 评论 -
UVa247 Calling Circles(Floyd warshall算法)
给定两个人相互打电话,如果a打给b,b打给c,c打给a,则说a,b,c在同一电话圈中。给出n个人的m次通话,输出所有的电话圈。原创 2023-08-19 16:27:53 · 1272 阅读 · 0 评论 -
UVa11987 Almost Union-Find(带删除操作的并查集)
UVa11987 Almost Union-Find(并查集)原创 2023-04-09 18:57:36 · 449 阅读 · 0 评论 -
UVa12232 Exclusive-OR(加权并查集)
UVa12232 Exclusive-OR(加权并查集)原创 2023-04-05 15:56:28 · 234 阅读 · 0 评论 -
UVa11988Broken Keyboard (a.k.a. Beiju Text)(链表)
UVa11988Broken Keyboard (a.k.a. Beiju Text)原创 2023-03-25 17:36:39 · 181 阅读 · 0 评论 -
数字转中文
数字转中文原创 2023-03-25 14:05:41 · 153 阅读 · 0 评论 -
UVa1329 Corporative Network(并查集)
UVa1329 Corporative Network(并查集)原创 2023-03-19 12:40:08 · 169 阅读 · 0 评论 -
UVa1160 X-Plosives(并查集)
UVa1160 X-Plosives(并查集)原创 2023-03-19 11:44:10 · 155 阅读 · 0 评论 -
UVa11991 Easy Problem from Rujia Liu
HashMap的使用原创 2022-06-11 16:48:31 · 165 阅读 · 0 评论 -
训练指南第三部分解题报告
11995 I Can Guess the Data Structure(stack,queue,priorityqueue结构判定)原创 2022-05-15 12:26:58 · 147 阅读 · 0 评论 -
UVa11995 I Can Guess the Data Structure
根据两种操作,操作1是将数据放入此数据结构中,操作2时从该数据结构中取出数据。判断此数据类型是栈、队列还是优先级队列。注意:取出数据时是不会出错,表示如果在此数据结构没有元素,从中取出元素时,认为该数据结构不属于上述三种类型中的任意一个。代码参考:OJ/UVa/11995 I Can Guess the Data Structure! at master · wuli2496/OJ · GitHub...原创 2022-05-15 12:21:27 · 184 阅读 · 0 评论 -
LeetCode Longest Valid Parentheses(dp)
1、问题给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度2、算法用dp(i)表示以字符串下标i结束的最长在效字符串长度。分两种情况 ,一种是s[i]=')',s[i-1]=')'此时,dp[i] = dp[i - 2] + 2。另外一种情况是s[i] = ')', s[i - 1] = ')',用子串sub表示以s[i-1]结束的最长有效字符串。如果子串sub的前一个字符为'('与s[i]构成有效字符串,此种情况下有dp[i] = dp[i - 1] +原创 2022-04-09 20:02:11 · 384 阅读 · 0 评论 -
codeforces D Prefixes and Suffixes(kmp)
先计算前缀函数,统计cnt[pi[i]]的个数,然后根据前缀前缀的迭代关系,即pi[pi[i] - 1],统计其个数,最后计算前缀自身。代码参考:https://github.com/wuli2496/OJ/tree/master/codeforces/432D%20Prefixes%20and%20Suffixes...原创 2021-12-17 15:01:39 · 281 阅读 · 0 评论 -
codeforces D MUH and Cube Walls(kmp)
先分别计算a,b数组的差分,得到两个数组,文本数组和模式数组,然后使用kmp统计模式数组在文本数组出现个数。对于b数组长度为1时,结果就是数组a的长度。代码参考:OJ/codeforces/471D MUH and Cube Walls at master · wuli2496/OJ · GitHub...原创 2021-12-17 13:33:04 · 235 阅读 · 0 评论 -
codeforces808G Anthem of Berland(kmp+自动机+dp)
先计算s+#的前缀函数,然后再计算出在 a-z字符集内的自动机。然后使用动态规则计算。dp(i,j)表示在文本串t的第i个字符,自动机状态为j(即前缀函数值)时的s在t出现的最大次数。当第i+1个字符为字母时,计算新的自动机状态newState以及新的dp(i+1, newState),当字符为?时,枚举a-z,计算dp(i+1,newState)代码参考:OJ/Anthem of Berland(kmp+自动机).java at master · wuli2496/OJ · GitHub..原创 2021-12-06 22:20:18 · 478 阅读 · 0 评论 -
spoj Pattern Find(kmp)
解法1先计算模式串的前缀函数,然后通过前缀函数来搜索文本串代码参考:https://github.com/wuli2496/OJ/blob/master/spoj/Pattern%20Find/Pattern%20Find(kmp).java原创 2021-11-29 21:40:32 · 236 阅读 · 0 评论 -
UVa11019 Matrix Matcher(hash+kmp)
二维字符串匹配问题,将二维模式x*y转换成1*y列的哈希数组。同时将二维文本串n*m转换成(n-x+1)*m列的哈希矩阵,前x行先计算哈希,后面的通过滚动计算哈希值。然后遍历(n-x+1)次,通过kmp计算1*y列构成的哈希数组,在(n-x+1)*m列中匹配出现的次数。代码参考:https://github.com/wuli2496/OJ/tree/master/UVa/11019%20Matrix%20Matcher...原创 2021-11-28 21:18:32 · 291 阅读 · 0 评论 -
UVa12467 Secret Word(kmp)
先将s反转得到字符串t,再通过kmp求得t的子串,使得访子串是s的最长前缀代码参考:OJ/UVa/12467 Secret Word at master · wuli2496/OJ · GitHub原创 2021-11-28 17:31:24 · 259 阅读 · 0 评论 -
UVa12604 Caesar Cipher(kmp)
枚举字符串w可偏移后的字符串w',计算其前缀函数,看加密串s中包含w'的个数,如果为1,说明是满足要求的。代码参考:https://github.com/wuli2496/OJ/tree/master/UVa/12604%20Caesar%20Cipher原创 2021-11-28 15:31:08 · 312 阅读 · 0 评论 -
UVa11452 Dancing the Cheeky-Cheeky(kmp)
使用kmp算法求得字符串的周期,然后根据长度以及周期找到字符串输出位置代码参考:OJ/UVa/11452 Dancing the Cheeky-Cheeky at master · wuli2496/OJ · GitHub原创 2021-11-26 21:46:37 · 369 阅读 · 0 评论 -
UVa11022 String Factoring(kmp+dp)
用dp(i,j)表示子串s[i..j]可以表示的最小长度。动态转移方程有dp(i,j) =min{dp(i,k) + dp(k+1,j)},其中k属于[i,j]。s[i..j]是周期串,最小周期为period则dp(i,j)=min{dp(i,j), dp(i, i + peroid - 1)代码参考:OJ/UVa/11022 String Factoring at master · wuli2496/OJ · GitHub...原创 2021-11-25 20:45:14 · 341 阅读 · 0 评论 -
UVa455 Periodic Strings(kmp)
先计算字符串的前缀函数,如果字符串长度为n,如果,说明字符串是周期的,否则不是。代码参考:OJ/Periodic Strings(kmp).java at master · wuli2496/OJ · GitHub原创 2021-11-24 21:44:16 · 436 阅读 · 0 评论 -
codeforces D Good Substrings(hash)
选择P和M,刚开始使用131和1000000009提交出错,换成1000000009和Long.MAX_VALUE提交成功。在处理出错字符个数不超过k时,在循环中统计出错字符个数提交超时,改成预处理,计算前缀中出错字符个数,在计算区间内出错字符个数时,可以直接使用两个前缀相减计算得到区间内的出错字符个数。代码参考:https://github.com/wuli2496/OJ/blob/master/codeforces/D%20Good%20Substrings.java...原创 2021-11-21 14:39:34 · 315 阅读 · 0 评论 -
SPOJ Pattern Find(Rabin Karp)
使用Rabin-Karp算法。代码参考:OJ/spoj/Pattern Find at master · wuli2496/OJ · GitHub原创 2021-11-21 12:34:27 · 282 阅读 · 0 评论 -
HackerRank Gift Boxes(hash)
在当前计算的长度不小于g字符串长度时,需要比较c串对应长度的哈希值与g的哈希值,如果相同,则需要更新当前的计算哈希的下标。代码参考:OJ/hackerrank/Gift Boxes at master · wuli2496/OJ · GitHub原创 2021-11-20 23:16:42 · 2307 阅读 · 0 评论 -
codeforces C Deletion of Repeats(hash)
将相同的数放到一组,并记录其对应的下标。初始化时计算前缀哈希及对应的指数值。在遍历相同组时,计算相邻的字符串构成的子串是否相同,如果相等,计算子串对应的长度及起始下标。因为要求取重复串最短,将结果按照重复串长度排序。计算其保留位置的起始位置 。代码参考:OJ/C Deletion of Repeats(hash).java at master · wuli2496/OJ · GitHub...原创 2021-11-20 21:08:13 · 690 阅读 · 0 评论 -
codeforces D. Palindrome Degree(hash)
开始使用Palindromic Characteristics的方式来计算dp(i,j)的回文度,然后统计dp所有(0,j)提示空间超过限制。因为是需要计算所有前缀的回文度之和。由于回文度关系有dp(i) = 1+dp(i/2),如果s[0..i]是回文串。分别计算从0到i和从i到0的哈希值,如果两个哈希值相等,说明是回文串,就用上面的回文度关系。代码参考:https://github.com/wuli2496/OJ/blob/master/codeforces/D%20Palindrome%20D原创 2021-11-20 19:24:25 · 337 阅读 · 0 评论 -
spoj Test(hash)
根据三个字符串s1,s2,s3,看满足条件的字符串s的最小长度,包含s1,s2,s3。1、存在三个关系包含时,取字符串中长度最长的。对于只有两个字符串存在包含关系时,取字符串最长,与第三个字符串取合集,两个字符串的长度-两个字符串的公共长度2,不存在包含关系时,求三个字符串的排列,取排列中的最小值。三个字符串的长度计算为三个字符串的长度和-两对字符串的最长重叠长度代码参考:OJ/Test(hash).java at master · wuli2496/OJ · GitHub...原创 2021-11-20 15:32:05 · 313 阅读 · 0 评论 -
codeforces Palindromic characteristics(hash或者dp)
1、动态规划用dp(l,r)表示子串s[l..r]的回文串阶数。对于长度len为1的有dp(l,r)=1。对于长度len等于2的,看字符串左右是否相等即可。当r-l>1时,如果s[l]不等于s[r]或者dp(l+1,r-1)等于0时, dp(l,r)=0,其他则dp(l,r)=dp(l,m)+1,其中m=l+len/2 -1。代码参考:OJ/Palindromic characteristics(dp).java at master · wuli2496/OJ · GitHub...原创 2021-11-17 20:47:27 · 466 阅读 · 0 评论 -
codeforces round25
1、A Binary Protocol遍历字符串,如果是1,则累加,如果是0,输出当前的累加值代码参考:OJ/A Binary Protocol.java at master · wuli2496/OJ · GitHub原创 2021-11-13 20:25:31 · 385 阅读 · 0 评论 -
codeforces D Santa Claus and a Palindrome(hash+贪心)
思路:计算字符串的正反哈希值。如果字符串不是回文串,并且存在字符串的反串,将这两上串作为构成回文串的两边。如果字符串是回文串,一种是将其作为回文串的中间,另外一种是作为回文串的对称串来处理。具体代码参考:https://github.com/wuli2496/OJ/blob/master/codeforces/D%20Santa%20Claus%20and%20a%20Palindrome.java...原创 2021-11-08 22:52:49 · 213 阅读 · 0 评论