![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模板
文章平均质量分 60
蜗角虚名羊
这个作者很懒,什么都没留下…
展开
-
输入输出模板
写需要卡常的代码前可以直接复制粘贴#include<bits/stdc++.h>using namespace std;inline char gc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&amp原创 2018-06-03 23:09:22 · 375 阅读 · 0 评论 -
划分树 主席树
文章目录[hdu2665(主席树模板)](http://acm.hdu.edu.cn/showproblem.php?pid=2665)[poj2104(划分树模板)](http://poj.org/problem?id=2104)[bzoj1901(树状数组套主席树)](http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=19...原创 2019-01-12 20:51:38 · 218 阅读 · 0 评论 -
bzoj3196: Tyvj 1730 二逼平衡树(区间线段树套splay)
题目Solution把普通平衡树代码中rtrtrt改成rt[pos]rt[pos]rt[pos],然后写一个线段树即可说说很简单,但是写起来真的麻烦死,后来我是找了一份和我写得有点像的代码改了好久才改出来的,其中一个原因竟然是我原本的平衡树板子就是错的!!!Code代码有点慢,bzojbzojbzoj上跑了9916ms9916ms9916ms注释掉的代码旁边若没有文字,则说明是另一种写...原创 2019-01-11 10:49:32 · 247 阅读 · 0 评论 -
后缀自动机
大佬博客转载 2018-12-25 15:02:11 · 102 阅读 · 0 评论 -
分组背包
Description有n个点,每个点有时间及价值,斜率相同的点存在冲突,要先取近的才能取远的,求T的时间内能得到的最大价值Code#include<bits/stdc++.h>using namespace std;const int N=202;struct node{ int x,y,len,w,v;}s[N];struct kk{ int w,v;}tmp...原创 2018-12-24 23:05:36 · 145 阅读 · 0 评论 -
bzoj4044: [Cerc2014] Virus synthesis(回文自动机)
题目学习博客题解#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;const int N=100002;int mp[99],ans,T,f[N],fail[N],ch[N][4],sz,q[N],h,t,len[N],s[N],n,las[N],last,u,v,i;char c;void init(int u,int l,int ...原创 2018-12-24 11:11:32 · 153 阅读 · 0 评论 -
拓展kmp
来自算法总结第二弹,上次总结了下kmp,这次就来拓展kmp吧。拓展kmp是对KMP算法的扩展,它解决如下问题:定义母串S,和字串T,设S的长度为n,T的长度为m,求T与S的每一个后缀的最长公共前缀,也就是说,设extend数组,extend[i]表示T与S[i,n-1]的最长公共前缀,要求出所有extend[i](0<=i<n)。注意到,如果有一个位置extend[i]=m,...转载 2018-12-18 15:10:12 · 140 阅读 · 0 评论 -
bzoj3674: 可持久化并查集加强版
题目#include<bits/stdc++.h>using namespace std;#define mid ((l+r)>>1)const int N=200002,M=10000002;int rt[N],cnt,L[M],R[M],dep[M],n,m,opt,x,rx,ry,las,v[M],y,i;inline char gc(){ static...原创 2018-12-11 08:58:18 · 189 阅读 · 0 评论 -
洛谷P1368 【模板】最小表示法
求与S循环同构的所有字符串中字典序最小的字符串原创 2018-12-21 11:31:44 · 143 阅读 · 0 评论 -
快速乘
转自转载 2019-01-19 18:13:43 · 92 阅读 · 0 评论 -
bzoj3944: Sum(杜教筛)
题目Description求S(n)=∑i=1nf(i)S(n)=\sum_{i=1}^n f(i)S(n)=∑i=1nf(i)Solutionpart1(核心公式推导):对于任何函数g(i)g(i)g(i),都有:∑i=1n(f∗g)(i)\sum_{i=1}^n(f*g)(i)∑i=1n(f∗g)(i)=∑i=1n∑d∣if(d)g(id)=\sum_{i=1}^n\sum_...原创 2019-01-19 22:40:03 · 148 阅读 · 0 评论 -
bzoj5463: [APIO2018] 铁人两项(圆方树)
题目题解最后树的形态我描述一下,我刚开始就是因为想象中树的形态是错的才理解了好久每个方点下面连着一堆圆点,两棵树之间的公共点为这两个点双的割点再补充一下题解中的(3),uuu到vvv的路径上的点双是包括uuu和vvv的#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;typedef long long ll;const int N=1...原创 2019-02-19 09:52:12 · 148 阅读 · 0 评论 -
bzoj2286: [Sdoi2011]消耗战(虚树)
题目题解Solution首先把询问点根据原树dfsdfsdfs序排序,显然这些点都要出现在虚树中来,而且为了保证结构不被破坏,另外一些跟他们有关系的点都要加入到虚树中来我们用一个栈维护原树上的一条链,自栈底到栈顶,深度由小变大每次考虑插入询问点进栈如果插入点的祖先是栈顶元素,那么直接插入即可,因为反正是一条链上的结点如果不是的话,那么只有可能分居他们的lcalcalca的两棵子树中...转载 2019-03-11 08:56:18 · 158 阅读 · 0 评论 -
bzoj2599: [IOI2011]Race(点分治)
题目Code#include<bits/stdc++.h>using namespace std;const int N=200002;struct node{ int to,ne,w;}e[N<<1];int h[N],sum,mx[N],sz[N],dis[N],rem[N],tot,x,y,z,i,k,rt,n,m,q[N],ans,sec[N],d[...原创 2019-03-04 20:29:25 · 140 阅读 · 0 评论 -
洛谷P3806 【模板】点分治1
题目不难发现树上的路径分为两类, 经过根节点rtrtrt的路径和包含于rtrtrt的某棵子树里(不经过rtrtrt)的对于前者, 我们用dis[u]dis[u]dis[u]表示结点u到根节点rtrtrt的路径长度, 则uuu到vvv的路径长即为dis[u]+dis[v]dis[u]+dis[v]dis[u]+dis[v]对于后者, 既然uuu到vvv的路径包含在rtrtrt的某个子树内, ...原创 2019-03-04 15:40:28 · 123 阅读 · 0 评论 -
bzoj2870: 最长道路tree(边分治)
题目题解边分治#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=200002;struct node{ int to,ne,w;}e[N<<1];struct kk{ int v,l;}t[2][N];int n,nn,i,v[N],x,y,h[N...转载 2019-03-08 15:15:27 · 164 阅读 · 0 评论 -
bzoj3730: 震波(点分树)
题目这题线段树过不了,一定要用树状数组ra[u][]ra[u][]ra[u][]维护uuu子树中与uuu各种距离的价值和rb[u][]rb[u][]rb[u][]维护uuu子树中与uuu的父亲的各种距离的价值和Code#include&lt;bits/stdc++.h&gt;#define mid ((l+r)&gt;&gt;1)const int N=100002,M=560000...原创 2019-03-05 20:40:12 · 231 阅读 · 0 评论 -
bzoj3053: The Closest M Points(k-dtree)
题目#include<bits/stdc++.h>using namespace std;const int N=50002;struct node{ int l,r,d[5],mn[5],mx[5];}t[N];int n,k,i,j,Q[5],ans[12],now,rt,T,m;priority_queue<pair<int,int> >q...原创 2019-02-20 16:21:55 · 369 阅读 · 0 评论 -
洲阁筛
来自转载 2019-01-10 11:40:52 · 692 阅读 · 0 评论 -
洛谷P3805 【模板】manacher算法
题目题解#include<bits/stdc++.h>using namespace std;const int N=11000002;int i,j,ans,k,rad[N<<1],len;char s[N<<1],s1[N];int main(){ scanf("%s",s1+1),len=strlen(s1+1); for (i=1;i&...转载 2018-12-20 17:07:25 · 127 阅读 · 0 评论 -
bzoj2553: [BeiJing2011]禁忌(AC自动机)
题目参考的题解Solutionf[i][j]表示前i个字符,在trie树上j的位置的期望对于u及其儿子v,若v是危险节点,那么u到0连边,否则u到v连边因为统计的是0到n的所有不同长度的期望值之和,所以还要加个虚拟节点,记录答案Code#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;typedef long double ld;...原创 2018-12-20 09:04:55 · 150 阅读 · 0 评论 -
FFT
很好的一篇博客 这是我的代码#include&amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;gt;using namespace std;const int N=4000003;const double pi=acos(-1.0);#define C Complexint r[N],n,m,i,lim=1,l;struct C{ double x,y; C(double ...转载 2018-04-23 08:47:06 · 152 阅读 · 0 评论 -
莫队
博客 注意:莫队的计算方式类似前缀和,所以查询区间[l,r]=[1,r]−[1,l)[l,r]=[1,r]−[1,l)[l,r]=[1,r]-[1,l) 所以l只能这么算:l=1;while (l<q[i].l) minu(l++);while (l>q[i].l) add(--l);而不能:while (l<q[i].l) minu(++l);wh...原创 2018-06-26 21:02:15 · 196 阅读 · 0 评论 -
hdu3507 Print Article(斜率优化)
题目 题解 此题是很基础的斜率DP的入门题。 题意很清楚,就是输出序列a[n],每连续输出的费用是连续输出的数字和的平方加上常数M 让我们求这个费用的最小值。 设dp[i]表示输出前i个的最小费用,那么有如下的DP方程: dp[i]=min{dp[j]+(sum[i]−sum[j])2+M}(0&amp;amp;amp;amp;amp;amp;lt;j&amp;amp;amp;amp;amp;amp;lt;i)dp[i]=min{dp[j]+(sum[i]−sum原创 2018-06-26 10:33:42 · 207 阅读 · 1 评论 -
ACM在线模版-f-zyj
转自f-zyj转载 2018-06-20 20:06:40 · 122 阅读 · 0 评论 -
bzoj3224: Tyvj 1728 普通平衡树/洛谷P3369 【模板】普通平衡树(Treap/SBT)
题目1.splay题解#include&lt;cstdio&gt;const int N=100003,inf=1&lt;&lt;30;int n,x,opt;struct Splay{ #define rt e[0].ch[1] struct node{ int ch[2],fa,v,sum,same; }e[N]; in...原创 2018-06-15 15:16:51 · 239 阅读 · 0 评论 -
洛谷P3834 【模板】可持久化线段树 1(主席树)
题目 题解#include&lt;bits/stdc++.h&gt;using namespace std;const int N=200003,M=5000003;#define mid (l+r&gt;&gt;1)int a[N],b[N],L[M],R[M],sum[M],tot,i,T[M],rt,n,q,m,x,y,k;inline int read(){ c...转载 2018-06-14 09:47:13 · 131 阅读 · 0 评论 -
bzoj4066: 简单题(k-d树)
题目 题解原创 2018-06-21 17:11:00 · 174 阅读 · 0 评论 -
洛谷P3384 【模板】树链剖分
题目 题解#include&lt;bits/stdc++.h&gt;using namespace std;const int N=100002;#define up(t) tr[t]=(tr[t&lt;&lt;1]+tr[t&lt;&lt;1|1])%M;#define mid ((l+r)&gt;&gt;1)struct node{ int to,ne;转载 2018-06-13 12:59:58 · 134 阅读 · 0 评论 -
后缀数组
题目 题解#include&lt;bits/stdc++.h&gt;using namespace std;const int N=1000002;int rak[N],tp[N],sa[N],n,i,M,tax[N];char s[N];void Qsort(){ memset(tax,0,(M+1)&lt;&lt;2); for (int i=1;i&lt;=n...转载 2018-07-02 13:34:35 · 151 阅读 · 0 评论 -
线性基
[转自Marser](https://www.luogu.org/blog/Marser/solution-p3812)首先,线性基是用于查询多个数中选取一些数的Xor最大值,最小值,以及能否得到某个值的数据结构,可以在log的时间内解决问题。它实际上是一个大小为log的数组,对于每一位记录一个最高位为它的某个数,要求这个数组可以表示所有这些数的子集的Xor值,初始全部为零。插入和判断插入...转载 2018-07-05 16:43:21 · 361 阅读 · 0 评论 -
bzoj2733: [HNOI2012]永无乡
题目线段树合并复杂度:O(合并的两棵树共同节点个数)O(合并的两棵树共同节点个数)O(合并的两棵树共同节点个数)。也就是说,大小为nnn和mmm的两棵线段树合并的复杂度是O(min(n,m))O(min(n,m))O(min(n,m)),因为线段树大小为O(nlogn)O(nlogn)O(nlogn),所以线段树合并的复杂度为O(nlogn)O(nlogn)O(nlogn)#include&...原创 2018-12-14 11:01:51 · 155 阅读 · 0 评论 -
hdu2473 Junk-Mail Filter(并查集,造假点)
题目题意:mmm个操作,每个操作可以把x,yx,yx,y合并再一个集合,也可以把xxx从它当前集合中删去,成为孤立的点,求最后的不同集合数量Solution如果真要从并查集里删一个数,那肯定是很麻烦的,而且我也不会,但是可以把xxx留着,以后不再调用xxx,把之后的调用xxx都改成调用yyy,其实就相当于删掉了xxxCode#include<bits/stdc++.h>us...原创 2018-12-12 15:19:52 · 218 阅读 · 0 评论 -
bzoj2287&洛谷P4141: 【POJ Challenge】消失之物(退背包)
ftiasch 有 $n$ 个物品, 体积分别是 $w_1,w_2,\dots,w_n$。由于她的疏忽,第 $i$ 个物品丢失了。 “要使用剩下的 $n-1$ 物品装满容积为 $x$ 的背包,有几种方法呢?”——这是经典的问题了。 她把答案记为 $\text{cnt}(i,x)$ ,想要得到所有$i \in [1,n]$, $x \in [1,m]$ 的 $\text{cnt}(i,x)$ 表格。原创 2018-11-01 08:35:41 · 256 阅读 · 0 评论 -
bzoj3732: Network(kruskal重构树)
题目题解Solution首先如果这道题是可以离线的,那么我们可以将边从小到大排序,每次加边,然后把两个端点所在的联通块并在一起。那么当AAA,BBB刚好联通时加的那条边的边权就是答案。但是本题强制在线,所以我们必须先预处理再回答询问。我们按照kruskalkruskalkruskal求最小生成树的方式加边,但每次在加边时,新建一个节点,然后把两个联通块(其实是两棵二叉树)的根节点作为其左右...转载 2018-10-31 16:21:21 · 179 阅读 · 0 评论 -
bzoj2730: [HNOI2012]矿场搭建(点双)
题目题解:无向图双联通分量 详见注释标程:#include&amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;gt;using namespace std;#define M(a) memset(a,0,sizeof(a))#define v e[i].totypedef long long ll;const int N=503;struct kk{ int to...原创 2018-04-23 09:37:38 · 165 阅读 · 0 评论 -
bzoj3040: 最短路(road)(dijkstra)
题目Solution配对堆优化 dijkstradijkstradijkstraCode#include&amp;lt;bits/stdc++.h&amp;gt;#include&amp;lt;ext/pb_ds/priority_queue.hpp&amp;gt;using namespace std;using namespace __gnu_pbds;typedef long long ll...原创 2018-08-04 13:31:47 · 316 阅读 · 0 评论 -
高精度模板
洛谷P1932 A+B A-B A*B A/B A%B Problem#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;typedef long long ll;const int N=20002,M=1e9;char s[10002];int i,cnt,f1,f2;struct NUM{ bool fl;int t; ...原创 2018-07-29 21:26:11 · 351 阅读 · 1 评论 -
bzoj2226: [Spoj 5971] LCMSum(欧拉函数)
题解#include&amp;amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;amp;amp;gt;using namespace std;typedef long long ll;const int N=1000002;int fl[N],prime[N],phi[N],n,i,j,tot,T;ll ans[N],tmp[N];int main(){ tmp[1]=1;原创 2018-06-13 09:32:44 · 199 阅读 · 0 评论 -
bzoj1202: [HNOI2005]狡猾的商人(带权并查集)
题目Codefa[x]fa[x]fa[x]表示xxx路径压缩后的父亲d[x]d[x]d[x]表示xxx到fa[x]fa[x]fa[x]的距离(有向,fa[x]fa[x]fa[x]到xxx的距离为−d[x]-d[x]−d[x])#include<bits/stdc++.h>using namespace std;const int N=102;int n,m,x,y,z,i...原创 2019-03-13 20:01:11 · 108 阅读 · 0 评论