摘要: 字符串S从任意位置开始扫描,到了结尾之后从头开始扫描,一共有n个串,他们彼此循环同构,为了求出串S的字典序最小的同构串,可以通过下面的线性时间复杂度的算法得到。 代码如下: #include<bits/stdc++.h> using namespace std; char s[100]; int m 阅读全文
posted @ 2020-06-17 18:06 WA自动机~ 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1961 通过next数组求字符串截止到i位置的最小循环节以及循环次数,可以在O(N)时间内得出,通过这个方法可以求得字符串的任意长度的循环节。 代码如下: #include<iostream> #include<cstdio> usin 阅读全文
posted @ 2020-06-17 17:40 WA自动机~ 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://www.acwing.com/problem/content/140/ O(N)时间复杂度,很高效;对64位自动溢出取模 代码: #include<iostream> #include<cstdio> #include<string.h> using namespace s 阅读全文
posted @ 2020-06-17 15:38 WA自动机~ 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3349 给出n个雪花,每个雪花有六角,如果两个角序列从某位置开始正序或者逆序是相等的,那就称这两个雪花相等,问是否存在两个相等的雪花。 使用Hash的思想,构造一个哈希函数进行定址,如果hash值相等就从这个值的链表中取出每个数进行判断 阅读全文
posted @ 2020-06-17 15:08 WA自动机~ 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://www.acwing.com/problem/content/description/137/ 首先考虑朴素算法,对于一个端点i,考虑前面的[i-m,i-1]的前缀和,sum[i]-minsum[j] 1<=i<=n,可以维护一个长度为M的队列,对于下一个i,搜索队列中的最 阅读全文
posted @ 2020-06-17 13:29 WA自动机~ 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://www.acwing.com/problem/content/135/ 可以证明每次切断的两段序列也是分别递减的,使用一个优先队列维护n个输入值的最大值,以及两个本来就有序的队列维护切断的两个序列即可。 注意本题需要使用longlong数据精度。 代码: #include< 阅读全文
posted @ 2020-06-17 12:11 WA自动机~ 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2259 由于同一个队伍的一定是连续的排队的,所以用一个队列记录排队的队伍顺序,用N个记录每个队伍内部的顺序。 代码: #include<iostream> #include<queue> using namespace std; #de 阅读全文
posted @ 2020-06-17 10:46 WA自动机~ 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2559 典型问题,就是有一个地方要注意,用数组模拟栈的时候要判断栈是否为空才能弹出元素,否则的话,设置一个st[0]=-1,这样矩形高度是0的时候就会自动判断栈空。 代码如下: #include<iostream> #include<c 阅读全文
posted @ 2020-06-17 10:17 WA自动机~ 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 递归求解,首先寻找最后一个加减号,拆分两段,若无最后一个加减号,寻找最后一个乘除号,这时这个表达式中只涉及括号外的乘除法(单个数算在内)。 这个算法实际上就是在将这个表达式分解成含括号的分量和含有乘法的分量,然后再按照乘法分量进行分解。 奉上案例: 1+3*4-(12-1)+20 代码如下: #in 阅读全文
posted @ 2020-06-17 09:23 WA自动机~ 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4699 由于当前的操作只和序列中的某一个指定的位置有关,可以从光标处将序列划分两段,分别维护两个栈,再维护左栈的前缀和以及前缀和最大值。 代码如下: #include<iostream> using na 阅读全文
posted @ 2020-06-17 08:29 WA自动机~ 阅读(173) 评论(0) 推荐(0) 编辑