一些小模板

KMP

#include <iostream>
#include <string>

using namespace std;

const int MAXN = 1e7;

void GetNext(string s, int Next[])
{
    Next[0] = -1, Next[1] = 0;
    int f = 0, t = 2;
    while(t < s.size())
    {
        if(s[t-1] == s[f])
            Next[t++] = s[t-1]==s[++f] ? Next[f] : f;
        else if(f > 0)
            f = Next[f];
        else if(f == 0)
            Next[t++] = 0;
    }
}
// 查找s2在s1中的位置,如果没有返回-1
int KMP(string s1, string s2)
{
    int len1 = s1.size();
    int len2 = s2.size();
    if(len1 < len2)
        return -1;
    int i1 = 0, i2 = 0;
    int Next[123];
    GetNext(s2,Next);
    while(i1 < len1 && i2 < len2)
    {
        if(s1[i1] == s2[i2])
            i1++, i2++;
        else if(Next[i2] == -1)
            i1++;
        else
            i2 = Next[i2];
    }
    return i2 == len2 ? i1-len2 : -1;
}

int main()
{
    string s1, s2;
    cin >> s1 >> s2;
    int pos = KMP(s1, s2);
    cout << pos << endl;
    return 0;
}

Manacher

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

const int MAXN = 1e6;

string GetMaStr(string s)
{
	string s1 = "";
	int s1Len = s.size()*2 + 1 , index = 0;
	for (int i = 0; i < s1Len; i++)
		s1 += (i&1) == 0 ? '#' : s[index++];
	return s1;
}

int Manacher(string s)
{
	if (s.size()==0) return 0;
	const int len = s.size()*2+1;
	int Rlen[len];
	s = GetMaStr(s);
	int C = -1, R = -1, maxl = 0;
	for (int i = 0; i < len; i++)
	{
		Rlen[i] = R > i ? min(Rlen[2*C-i], R-i) : 1;
		while(i+Rlen[i] < len && i-Rlen[i] > -1)
		{
			if(s[i+Rlen[i]] == s[i-Rlen[i]]) Rlen[i]++;
			else break;
		}
		if (i+Rlen[i] > R)
			R = i + Rlen[i], C = i;
		maxl = max(maxl, Rlen[i]);
	}
	return maxl - 1;
}

Dijkstra(点1~n)

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

typedef pair<int, int> P;
const int MAXN = 1000+1;
const int INF = 0x3f3f3f3f;
int dis[MAXN];
struct Edge{ int to, val; } t;
vector<Edge> G[MAXN];

void dijkstra(int s)
{
	priority_queue<P, vector<P>, greater<P> > q;
	q.push(P(dis[s], s));
	while (!q.empty())
	{
		P T = q.top();
		q.pop();
		int id = T.second;
		if (dis[id] != T.first)
			continue;
		for (int i = 0; i < G[id].size(); i++) {
			t = G[id][i];
			if (dis[t.to] > dis[id] + t.val) {
				dis[t.to] = dis[id] + t.val;
				q.push(P(dis[t.to], t.to));
			}
		}
	}
}
void init(int n)
{
	for (int i = 0; i <= n; i++)
		dis[i] = INF;
	dis[1] = 0;
}

int main()
{
	int m, n, a, b;
	cin >> m >> n;
	init(n);
	for (int i = 0; i < m; i++) {
		cin >> a >> t.to >> t.val;
		G[a].push_back(t); 
	}
	dijkstra(1);
	cout << dis[n] << endl;
	return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值