摘要:
题意:给你一个串,问你满足最大字串既是前后缀,也在字符串除去前后缀的位置中出现过; 思路:我用的是拓展kmp求的前后缀,只用kmp也能解,在字符串2/3的位置后开始遍历,如果用一个maxx保存前2/3的最大的next(kmp),也就是最大字串的前后缀,在与拓展kmp的next[i]进行比较; 代码: 阅读全文
摘要:
题意:给你多个字符串,问你这几个字符串的最长公共子串是哪个,如果有多个,输出字典序最大的那个,如果最长的公共子串长度小于3,输出一个奇怪的东西; 解题思路:首先看数据,数据不大,开始简单快乐的暴力之路,因为是公共的子串,所以我们随便找一个原串,把它的子串全部循环一遍,然后所有的子串都去和剩余的原串跑 阅读全文
摘要:
题意:求一个串所有的前后缀字串; 解题思路:kmp和拓展kmp都行,个人感觉拓展kmp更裸一点; 拓展kmp: 阅读全文
摘要:
题意:定义一个a*b=字符串a连接字符串b;给你一个字符串s,问你这个字符串最多能用多少个字符串t连接得到;例如:aaaa=4个a构成; 解题思路:kmp水题,next数组除了查找字串以外最广泛的一种用法,用来判定一个串是不是循环串,如果是,输出原串的长度/最小的循环节,否则,输出1就行了; 代码: 阅读全文
摘要:
解题思路:二分图的最大匹配,但这题是所有点都遍历一遍,所以答案/2; 代码: 阅读全文
摘要:
#include #include #include #include #include #define maxn 300 #define maxm 15000 using namespace std; struct Edge { int next; int to; int w; }edge[maxm]; int x,y; int head[maxm]; int cx[m... 阅读全文
摘要:
题意:给你n个点的电网系统,有一些点是电站,能提供p的电能,有些点是用户,能消耗c的电能,有些是过渡站,不消耗不产生(等于没用),然后m条电线(x,y,w),代表x可以向y运输w的电能,问你这个电网系统最多消耗多少电能 解题思路:题目好乱。。。其实就是一个最大流的板子题,电站提供的作为初始流量,用户 阅读全文
摘要:
题意:给你k个挤奶器,c头牛,每个挤奶器能放m头牛,问你奶牛需要走的最大距离最小是多少; 解题思路:因为最大距离最小,也就是求最小的距离满足所有牛都能到,所以我们先用floyd跑最短路,把所有点之间的距离算出来后再,对答案进行二分:牛和挤奶器的距离<=二分值的可以连一条边,容量为1; 然后源点和奶牛 阅读全文
摘要:
题意:给你一个长度为n的字符串,问你一共有多少Xi——从0开始到Xi的这段长度这个字符子串是循环串,并输出最多的循环节的次数; 解题思路:用kmp的next数组,我们从next数组的值中可以看出这个字串是否为循环串,例如: ababa next【0】=-1,next【1】=0,next【2】=0,n 阅读全文
摘要:
题意:给你一个字符串,问你至少增添几个字符可以把这个字符串变成一个循环字符串(ababa的循环节是ab,不是aba); 解题思路:利用kmp中的next数组,首先在这样求next的数组的代码里: next1[tlen]=我们输入的完整字符串的相同前后缀,然后tlen-next1[tlen]=循环节的 阅读全文