03 2023 档案
摘要:KMP算法的要点是避免回溯和Next[]数组,其中,Next[]数组中存的是最长公共前后缀的长度. 1.KMP模板 例题:HDU2087剪花布条 int Next[N],cnt;//构建Next[]数组 void getNext(char *p,int plen){ Next[1]=Next[0]=
阅读全文
摘要:1.动态分配空间 const int N = 27; struct trie{ trie *Next[N]; int flag; trie(){ flag=1; memset(Next,NULL,sizeof(Next)); } }*root; void insert(string s){ int
阅读全文
摘要:1.STL离散化 void LiSH(){ cin>>n; for(int i=1;i<=n;i++)cin>>olda[i],newa[i]=olda[i]; sort(olda+1,olda+n+1); int cnt=unique(olda+1,olda+n+1)-( 2.离散化+线段树 例题
阅读全文
摘要:差分是前缀和的逆操作 差分可以再O(1)的时间里让区间[x,y]进行加减操作 求出差分数组即可求出操作后的数组 一维差分 例题:HDU1556 for(int i=1;i<=n;i++){ int L,R;cin>>L>>R; d[L]++;d[R+1]--; } for(int i=1;i<=n;
阅读全文
摘要:1.普通并查集 int fa[N],n,m,x,y; void init(){ for(int i=0;i<N;i++)fa[i]=i; } int find(int x){ return fa[x]==x?x:fa[x]=find(fa[x]); } void merge(int x,int y)
阅读全文
摘要:1.循环枚举 for(int a=1;a<=3;a++){ for(int b=1;b<=3;b++){ for(int c=1;c<=3;c++){ for(int d=1;d<=3;d++){ for(int e=1;e<=3;e++){ for(int f=1;f<=3;f++){ for(i
阅读全文
摘要:1.深度优先搜索求连通块个数 void dfs(int x,int y){ vis[x][y]=1; for(int i=0;i<8;i++){ int h=x+dx[i],l=y+dy[i]; if(h<1||h>n||l<1||l>m||vis[h][l])continue; dfs(h,l);
阅读全文

浙公网安备 33010602011771号