模板集合
Cymbals
Public void effect()
展开
-
Tarjan求强连通分量模板
int dfn[maxn], low[maxn], scc[maxn], tot, scc_cnt;stack<int> st;void tarjan(int x) { dfn[x] = low[x] = ++tot; st.push(x); for (auto v:G[x]) { if (!dfn[v]) { ta...原创 2019-10-28 14:40:13 · 217 阅读 · 0 评论 -
好好写一个带注释的回文树模板
——我发现我快忘了QWQQQQQQ,赶紧整理一下。struct Pam { int next[maxn][26]; int fail[maxn]; int len[maxn];// 当前节点表示回文串的长度 int cnt[maxn];// 当前节点表示回文串的出现次数 int num[maxn];// 到当前节点这里有多少本质不同的回文子串 int S[maxn]; int la...原创 2018-10-11 21:46:58 · 269 阅读 · 0 评论 -
两道可持久化字典树的模板题(HDU - 4757和HDU - 6191 )
两道题都是树上异或最大值的问题,这一类问题都是可持久化01字典树的模板题,不过需要一些树论知识来处理一下。HDU - 4757:求树上两点路径间的异或最大值。显而易见,两点路径就是个lca。对每一个节点,以其父亲为last版本,新建可持久化字典树即可。最后用(sz[next[now][!d]] + sz[next[now2][!d]]) - (2 * sz[next[now3][!d]]...原创 2018-10-04 22:21:35 · 350 阅读 · 1 评论 -
HDU - 3966 Aragorn's Story(树链剖分模板题)
Our protagonist is the handsome human prince Aragorn comes from The Lord of the Rings. One day Aragorn finds a lot of enemies who want to invade his kingdom. As Aragorn knows, the enemy has N camps ou...原创 2018-09-30 13:28:09 · 300 阅读 · 0 评论 -
记录ac自动机模板
const int maxn = 500005;struct AC_Automaton { int next[maxn][26]; int fail[maxn]; int end[maxn]; int sz, root; int newNode() { for(int i = 0; i &amp;lt; 26; i++) { ...原创 2018-09-12 13:19:22 · 209 阅读 · 1 评论 -
记录我的Sam模板
const int maxn = 100005;struct Sam { int next[maxn &amp;amp;amp;amp;amp;amp;amp;amp;lt;&amp;amp;amp;amp;amp;amp;amp;amp;lt; 1][26]; int link[maxn &amp;amp;amp;amp;amp;amp;amp;amp;lt;&amp;amp;amp;amp;amp;amp;amp;amp原创 2018-08-28 12:45:54 · 446 阅读 · 2 评论 -
粗糙splay板子
存一个。#include<bits/stdc++.h>using namespace std;const int maxn = 1e5 + 5;struct Splay { //f[i]表示i的父结点,ch[i][0]表示i的左儿子,ch[i][1]表示i的右儿子. //key[i]表示i的关键字(即结点i代表的那个数字),cnt[i]表示i结点的关键字出现的次数(相当...原创 2018-10-20 13:16:22 · 148 阅读 · 0 评论 -
存一个hash板子
struct Hash { ull hs[maxn], hs2[maxn]; ull p[maxn], p2[maxn]; int seed = 31, seed2 = 233; void init(char *s) { p[0] = p2[0] = 1; hs[0] = hs2[0] = s[0] - 'a'; for(int i = 1, c; s[i]; i++) {...原创 2018-11-06 22:02:56 · 273 阅读 · 0 评论 -
强力输入挂
namespace IO { const int maxn = 150960; char buf[maxn], t[50]; int bn = maxn, bi = maxn; int read(char *s) { while (bn) { for (; bi < bn && buf[bi] <...原创 2019-08-06 00:08:07 · 195 阅读 · 0 评论