
ACM
Aya_Uchida
博客将迁到博客园,https://www.cnblogs.com/Aya-Uchida/
展开
-
Codeforces 1102B Array K-Coloring 思维
题意:给出n个元素的数组和k个颜色,要求将所有元素都涂色,且相同元素的颜色不同,且要使用所有颜色。思路:将所有元素的位置使用vector保存,对所有元素一种接着一,种从1开始到k循环着色。着色完按照顺序输出即可。AC代码:#include<iostream>#include<algorithm>#include<vector>usin...原创 2019-02-06 00:14:24 · 424 阅读 · 0 评论 -
洛谷P1144 最短路计数 BFS
题意:给出一个N个顶点M条边的无向无权图,顶点编号为1−N。问从顶点1开始,到其他每个点的最短路有几条,可能有自环与重边。输出答案 mod 100003 后的结果即可。如果无法到达顶点i则输出0。题解:用一个cnt数组记录1点到达某个点的最短路径的条数,如果在某个时候已经求出u的深度,如果访问的点是v且v的距深度等于u的路径+1,则可知这条u至v的边是1到v的最短路径,所以cnt[v]...原创 2019-05-05 23:39:29 · 275 阅读 · 0 评论 -
洛谷P2384 最短路 最短路变形
题意:给定n个点的带权有向图,求从1到n的路径中边权之积最小的简单路径。输出它模9987的余数。题解:最短路变形,令距离数组dis[start]=1,其他为INF,使用堆优化dijkstra算法,松弛操作变成dis[v]=min{dis[v],dis[u]*E{u,v}};即可。AC代码:#include <iostream>#include <vecto...原创 2019-05-05 23:24:38 · 209 阅读 · 0 评论 -
做题记录(2019年2月10日起)
开个博客记录一下自己做过的题:2019年:2月:UVA10082 (字符串常量水题)https://vjudge.net/problem/UVA-10082UVA272 (字符串替换水题)https://vjudge.net/problem/UVA-272 UVA401 (回文串镜像串水题)https://vjudge.net/problem/UVA-401UV...原创 2019-04-13 00:20:17 · 300 阅读 · 0 评论 -
HDU 1686 Oulipo KMP算法
题意:求模式串在待匹配串的出现次数。解法:1、使用朴素解法,遍历模式串一次,然后待匹配串往后移动一个字符。时间复杂度O(nm)。2、使用KMP算法,求出模式串的Next数组,然后对待匹配串匹配,令i是待匹配串位置指针,j是模式串位置指针。当j等于模式串的长度,即完成一次匹配。令j=next[j]回溯即可。AC代码:#include <iostream>#in...原创 2019-03-13 16:48:58 · 265 阅读 · 0 评论 -
KMP算法总结和例题(来自kuangbin套题)
一、KMP算法介绍:对于两个字符串,如果我们需要在一个串中找到另一个串的出现数量,有两种方法:在待匹配串中设置指针i,每匹配完一次模式串则往后移一位,该算法的时间复杂度是O(n*m),空间复杂度O(n+m)。对于这种方法,我们注意到,很多需要匹配的操作实际上是不必要的,比如模式串abcde,待匹配串abcdeabcde,当匹配完b之后移动到匹配c,是完全没有必要的。因此,为了避免这...原创 2019-03-20 23:11:12 · 896 阅读 · 1 评论 -
POJ 3080 Blue Jeans KMP算法+暴力匹配
题意:给定n组测试数据,每组测试数据有m个字符串,找出这些字符串中最长的公共字符串,如果有多组长度一样,输出字典序最小的。如果公共字符串的长度小于3,输出no significant commonalities题解:对于每一组测试数据,二重循环暴力搜索第一个字符串的所有子串。匹配剩下的字符串,如果是共有的,且新字符串比原字符串长或者长度一样且字典序更小时,则更新答案字符串。AC代码...原创 2019-03-17 08:29:59 · 378 阅读 · 0 评论 -
POJ 2752 Seek the Name, Seek the Fame KMP算法
题意:给定若干字符串(这些字符串总长 ≤ 400000 ),在每个字符串中求出所有既是前缀又是后缀的子串长度。例如:ababcababababcabab,既是前缀又是后缀的:ab,abab,ababcabab,ababcababababcabab。题解:使用kmp算法。我们知道next[i]是i之前的子字符串中相同前缀和后缀的最长长度。则可以这么考虑:从next[str.size(...原创 2019-03-14 19:38:02 · 325 阅读 · 0 评论 -
Codeforces 1097C Yuhao and a Parenthesis 栈
题意:输入一些字符串,只含有左右括号,当且仅当两字符串的合成体左右括号数量相同且最左边是左括号,最右边是右括号时,字符串可组合,字符串只能用一次。求最大组合数。题解:可以先处理"()"的情况。处理字符串中部分回文的情况,可以使用栈解决。处理完后:1.如果只有'(',与有相同数量的')'的串组合。如果是空串,空串计数器+1,如果两种都有,不可能组合。数量就是空串数除2取整+左...原创 2019-03-09 22:28:13 · 216 阅读 · 0 评论 -
UVA 1587 Box 思维
题意:给出两条边长确认一个矩形,给出六个矩形,请问这六个矩形能不能组成一个长方体。做法:对于一个长方体,设其边长为a,b,c,令a<b<c,排序完成后,则有,ab,ab,ac,ac,bc,bc,即只有这样的数据才能构成长方体。则可以这样考虑,声明一个结构体,含有宽(w)和高(h),对于输入的数据,若后项大于前项,则交换,排序后,首先寻找是否刚好有三组一样的矩形。如果有,...原创 2019-03-09 22:19:31 · 298 阅读 · 0 评论 -
UVA 455 Periodic Strings KMP算法
题意:求一个字符串的最小周期。长度不超过80。解法:令test case的最大值是k。方法一:使用for循环比较字符元素。该方法适应性强,时间复杂度O(kn^2)方法二:使用kmp算法求next数组。时间复杂度O(kn)但是使用kmp算法时如果存在abcda串,n-next[n]将输出4,实际结果是5。这个错误结果的产生是因为字符串的后缀子串与前缀子串一致。导致错误。所...原创 2019-03-09 22:08:49 · 279 阅读 · 0 评论 -
Codeforces 1102D Balanced Ternary String 思维
题意:给出0,1,2序列,序列中的0,1,2数量不一样,但是0,1,2都可以被修改成其他数字,求将序列修改成0,1,2数量相等相等序列的最小修改次数,并输出修改后最小字典序的序列。思路:预处理序列的0,1,2的数字个数和位置,设0的数量是aa,1的数量是bb,2的数量是cc,此时分情况讨论:若aa==bb&&bb==cc直接输入,如果不是,使用三个双端队列,保存0,1,...原创 2019-02-06 00:23:12 · 311 阅读 · 0 评论 -
洛谷P1608 路径统计 最短路变种 dijkstra算法
题意:求一个带权有向图的1到n的最短路径数量,两点间会有重边,两条最短路径只有在存在一条边及以上不同时认为不同(所以重边算一条边),若城市n无法到达则只输出一个(‘No answer’)。题解:和P1144差不多,但是P1144是无权图,所以可以直接bfs,本题是带权图,就需要使用dijkstra算法求最短路了,更新数量时,如果dis[v]需要松弛,则说明存在一条新的边缩短了1到v的最...原创 2019-05-06 00:02:36 · 337 阅读 · 0 评论