- 博客(8)
- 收藏
- 关注
原创 插入最少字符使字符串回文(LCS,DP)
给定一个字符串,求插入最少的字符使得原字符串回文,求出该字符串逆序与正序的最长公共子序列长度,再用dp搞一下就行:#include using namespace std;int dp[1005][1005];int main(){ string x,y; cin>>x; y = x; reverse(y.begin(),y.end()); fo
2016-08-26 12:07:35 1064
原创 Manacher算法求最长回文子串模板
在求一个字符串的最长回文子串时,当数据较大的时候,需要用到Manacher算法:#include using namespace std;const int N = 220005;char s[N];int p[N],n,id,mx;void Manacher(){ id = mx = 0; int ans = 0; n = strlen(s); f
2016-08-26 11:31:30 475
原创 Lucas定理模板
Lucas定理:Lucas定理是用来求 C(n,m) mod p的值,p是素数(从n取m组合,模上p)。描述为:Lucas(n,m,p)=C(n%p,m%p)* Lucas(n/p,m/p,p)Lucas(x,0,p)=1;简单的理解就是:以求解n! % p 为例,把n分段,每p个一段,每一段求得结果是一样的。但是需要单独处理每一段的末尾p,2p,...,把
2016-08-23 19:25:16 922 2
原创 博弈模板(bash,威佐夫,Nim)
写一些博弈模板,借用51Nod上的题目:Bash游戏:有一堆石子共有N个。A B两个人轮流拿,A先拿。每次最少拿1颗,最多拿K颗,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N和K,问最后谁能赢得比赛。#include using namespace std;int main(){ int t,n,k; scanf("%d
2016-08-22 17:18:35 437
原创 斯特林近似求N阶乘的长度
#include using namespace std;typedef long long ll;#define PI 3.1415926#define E 2.718281828459int main(){ ll n; cin >> n; ll res = 0.5 * log10(2.0 * PI * n) + n * lo
2016-08-21 18:39:23 849
原创 floyd算法模板
floyd算法与dijkstra算法的区别就是在floyd算法中可以有线负权边typedef struct { char vertex[VertexNum]; //顶点表 int edges[VertexNum][VertexNum];
2016-08-09 07:35:49 446
原创 Dijkstra模板
Dijkstra算法是一个计算单源最短路径的算法,但是注意图中不能出现负权const int MAXINT = 32767;const int MAXNUM = 10;int dist[MAXNUM];int prev[MAXNUM];int A[MAXUNM][MAXNUM];void Dijkstra(int v0){ bool S[MAXNUM];
2016-08-09 07:33:38 483
原创 归并排序模板
贴一个归并排序的模板:#define max 1000001long long a[max],b[max];long long count;void Merge(long long a[], int start, int mid, int end) //归并排序的合并部分{ int i = start,j = mid + 1,k = start; while(i <=
2016-08-02 13:01:21 427
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人