模板
文章平均质量分 81
Coco_T_
东南大学本科毕业生,浙江大学在读研究生
展开
-
luoguP3384 树链剖分(链+子树)
在noip前夕,来一波模板树链剖分一直是我认为比较难的数据结构 有一些很重要的细节需要注意 就拿这个询问树链权值和的函数来说吧:ll asksum(int x,int y) //传入的是原树上的结点编号 { ll ans=0; int f1=top[x]; int f2=top[y]; while (f1!=f2) { if原创 2017-11-07 21:40:14 · 270 阅读 · 0 评论 -
KMP
KMP模板,不知道使用率高不高,但是毕竟是AC自动机的精简版 注意失配数组的求解//这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=1000005;char s[N],w[N];int t[N],l1,l2;void fail() //失配函数原创 2017-11-08 17:23:40 · 195 阅读 · 0 评论 -
AC自动机
AC自动机:简单版 询问每个字符串是否出现过 为了压缩时间,我们当碰到一个ed结点的时候, 如果该结点没有访问过,我们就按照fail跳一遍 如果该结点之前统计过,我们就不用顺着fail指针再统计了//这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=10000原创 2017-11-08 19:06:11 · 181 阅读 · 0 评论 -
后缀数组
后缀数组的模板是非常容易写错的 (注释内容都是需要注意的地方) 看好题目要求,字符集是小写字母/全字符,写法是有一点不一样的//这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=1000005;int sa[N],w1[N],w2[N],cc[200],hei[原创 2017-11-08 19:14:06 · 186 阅读 · 0 评论 -
割顶(桥)
新学的知识,实现起来有点不熟练 要注意的就是对于 dfs 树根的特判 并且注意“存在即合理”的特性//这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=100005;struct node{ int x,y,nxt;};node way[N<<1];原创 2017-11-08 20:04:04 · 264 阅读 · 0 评论 -
luoguP3387 【模板】缩点
题目背景缩点+DP题目描述给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。输入输出格式输入格式: 第一行,n,m 第二行,n个整数,依次代表点权 第三至m+2行,每行两个整数u,v,表示u->v有一条有向边输出格式: 共一行,最大的点权之和。输入输出样例输入样例#1原创 2017-11-08 21:01:14 · 529 阅读 · 0 评论 -
矩阵快速幂
题目链接矩阵的模板写起来还是比较熟悉的 要注意H最大只能开到100*100,再大就会炸掉(编译都不行) 三重循环一定要写好了曲神今天给我辟了一下谣 矩阵计算的是每个数的系数,所以我们在计算最后答案的时候,第一列的所有元素都要算进去//这里写代码片#include<cstdio>#include<cstring>#include<iostream>#define ll long long原创 2017-11-08 21:56:54 · 182 阅读 · 0 评论 -
RMQ
作为一种使用率极高的算法,一定不要写错 在倍增的时候,不要无脑循环,要判断数据范围//这里写代码片#include<cstdio>#include<cstring>#include<iostream>#include<cmath>using namespace std;const int N=100003;int maxn[N][20],n,m;int main(){ scan原创 2017-11-09 07:26:21 · 239 阅读 · 0 评论 -
单源最短路(堆优dijkstra)
tip队列中的元素不要push错了 明确每个vector记录的内容到底是什么//这里写代码片#include<cstdio>#include<iostream>#include<cstring>#include<queue>#include<vector>using namespace std;const int N=10010;struct node{ int x,y,v;原创 2017-11-07 21:44:05 · 233 阅读 · 0 评论 -
高精度(模板)
今天写了一道需要高精度的模板题 结果高精乘写错一句,调了1个小时。。。STO 所以写了一遍常用的高精度,在这里再简单说一下高精度的思路:高精加模拟竖式计算 注意每次累加的时候都要加上余数d高精减有一个额外操作:判断两数大小,确定答案符号 第一标准:长度 第二标准每一位数的大小 注意:因为在存贮的时候是倒叙存储,所以在对比的时候也要从高位到低位倒叙对比 模拟竖式计算 借位的时候容易出错原创 2017-10-05 19:26:48 · 551 阅读 · 0 评论 -
UVa10382 - Watering Grass(贪心经典模型:区间覆盖)
题目链接简介: 用最少圆覆盖矩形分析: 我们通过分析可以发现 半径小于等于r的圆是完全没有用的 而每个圆能够有效覆盖的面积只有: 因此我们在输入的时候,预处理一下每个圆可以覆盖的矩形的左端点和右端点 这样我们就把问题转化成了贪心的经典问题:区间覆盖我们把所有的区间按照端点排序,注意,如果某一区间边界大于s,t的边界,应把它们变成s或t 因为超出的部分毫无意义,同时还会影响对数据的分析原创 2017-10-18 18:51:10 · 389 阅读 · 0 评论 -
树状数组
tiplowbit=i&(-i) 在建树的时候要明确每个结点的管辖区间:for (int j=i;j>i-(i&(-i));j--)单点修改,区间查询//这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=500005;int c[N],a[N]; int n原创 2017-11-07 21:47:51 · 156 阅读 · 0 评论 -
堆
没什么好说的 稳就好手写小根堆//这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=1000005;int Q[N],tot=0;void insert(int x){ Q[++tot]=x; int now=tot; int fa=原创 2017-11-07 21:49:09 · 172 阅读 · 0 评论 -
LCA(倍增)
LCA的倍增算法,算是一种比较好些并且使用率很高的算法了//这里写代码片#include<cstdio>#include<cstring>#include<iostream>#include<cmath>using namespace std;const int N=500005;struct node{ int x,y,nxt;};node way[N<<1];int pr原创 2017-11-07 21:50:52 · 257 阅读 · 0 评论 -
Bellman_Ford的负环
大家都知道Bellman的优化版是SPFA 但是我还是偏向于叫Bellman 这是一种重要的负环判断法(同时维护单源最短路)//这里写代码片struct node{ int x,y,v;};struct Bellman{ int n,m; vector<node> e; //边列表 vector<int> G[N]; //每个原创 2017-11-07 21:55:08 · 535 阅读 · 0 评论 -
LA3644 - X-Plosives(bcj模板)
题目链接简介: 有一些简单化合物,每个简单化合物都是由两种元素组成的 身为一个装箱工人,你从实验员那里按照顺序依次把一些化合物装车 但是这里存在一个安全隐患:如果车上存在x个简单化合物,而且正好包含k种元素,就很容易发生爆炸 这时我们就要果断拒绝装车 输出有多少没有装车的化合物分析: 我们仔细考虑一下,怎样才会出现“x个简单化合物,而且正好包含k种元素”的情况 如果我们把每种元素看做是原创 2017-11-05 21:14:17 · 283 阅读 · 0 评论 -
hdu2639 Bone Collector II
Problem Description The title of this problem is familiar,isn’t it?yeah,if you had took part in the “Rookie Cup” competition,you must have seem this title.If you haven’t seen it before,it doesn’t matt原创 2017-11-06 07:30:22 · 232 阅读 · 0 评论 -
UVa11488 - Hyper Prefix Sets(Trie模板)
题目链接简介: 给出一个字符串集合S,定义P(S)为所有字符串的公共前缀长度*|S| 给定n个01串,从中选出一个集合S,使P(S)最大分析: 这就是Trie的经典题啦 我们把所有的串都扔到一个Trie上,同时统计每个结点上有多少字符串, 然后一遍dfs得出答案(结点的deep就是LCP的长度)这道题我还是用的左儿右兄的记录方式 感觉不是一般的方便啊一般需要记录字符集的问题,都可以考虑用原创 2017-10-30 15:36:12 · 320 阅读 · 0 评论 -
线段树(加法和乘法的模板)
所有的操作都没什么很大的变化 我们处理加法和乘法的时候,默认乘法操作优先于加法操作在计算一个结点的值的时候: val=val*mul+len*add mul:乘法标记 len:区间长度 add:加法标记在下传标记的时候, 儿子的值我们也是按照上面那样算注意,标记代表的是对当前结点已经进行过的操作,但是还没有对儿子进行过该操作整个算法中,最难的就是儿子的标记维护child.mul=chil原创 2017-10-19 21:45:17 · 1797 阅读 · 2 评论 -
bzoj4034 [HAOI2015]树上操作
题目链接分析: 树链剖分练手题 注意线段树是建立在dfs序上的,所以子树一定在线段树上是一个连续的区间 子树加的时候直接线段树区间加即可 询问树链信息的时候,因为top,deep,pre数组都是建立在原树上的 所以传入的是原树上的结点编号(输入编号)这道题也算是一个史前巨坑了,以前一直A不了 今天终于一A了tip开ll//这里写代码片#include<cstdio>#include<原创 2017-11-09 10:54:01 · 349 阅读 · 0 评论