摘要: void init() { for(int i = 1;i <= n;i++) pre[i] = i; } int findd(int x) 递归 { return pre[x] == x?x:pre[x] = findd(pre[x]); } void join(int a,int b) { in 阅读全文
posted @ 2017-09-02 22:38 zzzzzzzzhu 阅读(334) 评论(0) 推荐(0) 编辑
摘要: //普通 void getnext1(char *s) { int i = 0,j = -1,len = strlen(s); ne[0] = -1; while(i < len) { if(j == -1 || s[i] == s[j]) ne[++i] = ++j; else j = ne[j] 阅读全文
posted @ 2017-09-02 22:38 zzzzzzzzhu 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 最短路: //权值非负,不连通为INF、 //O(n^2) void dij(int beg) { memset(dis,0x3f,sizeof(dis)); memset(vis,0,sizeof(vis)); dis[beg] = 0; for(int i = 1;i <= n;i++) { i 阅读全文
posted @ 2017-09-02 22:38 zzzzzzzzhu 阅读(319) 评论(0) 推荐(0) 编辑
摘要: int dp[1005][1005] = {0},len1,len2; char a[1005],b[1005]; void lcs() { for(int i = 1; i <= len1;i++) { for(int j = 1;j <= len2;j++) { if(a[i-1] == b[j 阅读全文
posted @ 2017-09-02 22:37 zzzzzzzzhu 阅读(244) 评论(0) 推荐(0) 编辑
摘要: int cnt,prime[MAXN+1],mi[MAXN+1],vis[MAXN+1]; //cnt表示素数个数 //prime存放每个素数 //mi存放每个数的最小素数因子 void getprime() { cnt = 0; memset(prime,0,sizeof(prime)); for 阅读全文
posted @ 2017-09-02 22:37 zzzzzzzzhu 阅读(277) 评论(0) 推荐(0) 编辑
摘要: #pragma comment(linker, "/STACK:102400000,102400000") #include<cstdio> #include<iostream> #include<iomanip> #include<algorithm> #include<cmath> #inclu 阅读全文
posted @ 2017-09-02 01:56 zzzzzzzzhu 阅读(387) 评论(0) 推荐(0) 编辑
摘要: A.只要考虑分成一个串的情况就可以了。 #include<bits/stdc++.h> using namespace std; int n,a[105]; int main() { ios::sync_with_stdio(0); cin >> n; for(int i = 1;i <= n;i+ 阅读全文
posted @ 2017-09-02 01:32 zzzzzzzzhu 阅读(184) 评论(0) 推荐(0) 编辑