![](https://img-blog.csdnimg.cn/20190916171216711.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
【----------模板----------】
sugarbliss
我想要的不多,只是和多数人不一样。
展开
-
字典树(前缀树)
#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 7;int trie[N][30], vis[N];char s[N];int k = 1;void Insert(char *w){ int n = strlen(w); int p = 0; for(int i = ...原创 2020-03-28 14:05:56 · 205 阅读 · 0 评论 -
pb_ds库 - 红黑树
#include <ext/pb_ds/tree_policy.hpp>#include <ext/pb_ds/assoc_container.hpp>using namespace __gnu_pbds;typedef tree<pt,null_type,less< pt >,rb_tree_tag,tree_order_statistics_n...原创 2019-10-26 11:53:19 · 671 阅读 · 0 评论 -
牛客小白月赛18 - E - Forsaken的数列(splay模板)
题目链接:https://ac.nowcoder.com/acm/contest/1221/E#include <iostream>#include <cstdio>#include <cstring>#include <stack>#include <vector>#include <algorithm>#...原创 2019-10-26 11:18:10 · 313 阅读 · 0 评论 -
P3381 【模板】最小费用最大流(MCMF)
题目链接:https://www.luogu.org/problemnew/show/P3381#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#define inf 0x3f3f3f3fusing namespace std;const int ...原创 2019-04-10 21:17:13 · 290 阅读 · 0 评论 -
牛客寒假算法基础集训营3-B-处女座的比赛资格(DAG上的最短路)
题目链接:https://ac.nowcoder.com/acm/contest/329/B思路:首先这题可以用最短路来搞,只不过题目说行程不会形成环,也就是DAG图(有向无环图),spfa会超时,有负权值的边也不能用dijkstra,既然是DAG图那起点的入度必为0,我们可以用拓扑排序,去边的时候更新花费,然后判断两种花费情况即可。AC代码1:#include <bits/s...原创 2019-03-04 21:15:25 · 283 阅读 · 0 评论 -
牛客寒假算法基础集训营2-G- 处女座与复读机(最小编辑距离dp)
题目链接:https://ac.nowcoder.com/acm/contest/327/G#include<bits/stdc++.h>using namespace std;const int N = 1e3 + 5;int T, cas = 0;int n, m;int dp[N][N];char s[N], t[N];int main(){ whi...原创 2019-03-02 15:23:53 · 167 阅读 · 0 评论 -
洛谷P3397 地毯(二维差分)
题目链接:https://www.luogu.org/problemnew/show/P3397思路:使用二维差分通过仅改变四个值,控制整片区域的数值加减。具体看代码解释吧。#include <bits/stdc++.h>using namespace std;const int N = 1e3+7;int a[N][N];int main(){ int n...原创 2019-02-28 21:54:36 · 573 阅读 · 0 评论 -
两球相交(模板)
#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#define CLR(a,b) memset(a,b,sizeof(a));const int inf=0x3f3f3f3f;using namespace std;const double P...原创 2019-01-22 13:22:27 · 1976 阅读 · 1 评论 -
Dijkstra+优先队列+链式前向星(模板)
#include <iostream>#include <string.h>#include <stdio.h>#include <algorithm>#include <queue>#include <vector>#define ll long long#define inf 0x3f3f3f3f#def...原创 2019-01-16 15:27:41 · 851 阅读 · 3 评论 -
Spfa + 链式前向星(模板)
#include <iostream>#include <string.h>#include <stdio.h>#include <algorithm>#include <queue>#include <vector>#define ll long long#define inf 0x3f3f3f3f#def...原创 2019-01-16 15:19:01 · 361 阅读 · 0 评论 -
分层图最短路(模板)
建图时分层(vector) :#include <bits/stdc++.h>using namespace std;const int maxn = 2e6+7;#define ll long long#define inf 0x3f3f3f3f#define pii pair<int, int>int n, m, s, t, k;int d[maxn...原创 2019-01-19 13:35:59 · 665 阅读 · 0 评论 -
dijkstra + 链式前向星
#include <iostream>#include <string.h>#include <stdio.h>#include <algorithm>#include <queue>#include <vector>#define ll long long#define inf 0x3f3f3f3fcons...原创 2019-01-18 10:43:56 · 1854 阅读 · 1 评论 -
最小(大)表示法
#include <bits/stdc++.h>using namespace std;string s;int Get_min(){ int n = s.length(); int i = 0, j = 1, k = 0, t; while(i < n && j < n && k < n) {...原创 2019-01-05 18:46:10 · 305 阅读 · 0 评论 -
组合数C(m,n)模板
公式递推代码:C(n, m) = C(n -1, m - 1) + C(n - 1, m)。void get_c(ll x){ c[0][0] = 1; for(int i = 1; i <= x; i++) { c[i][0] = 1; for(int j = 1; j <= i; j++) c[i][...原创 2018-12-17 20:11:06 · 518 阅读 · 0 评论 -
P1972 [SDOI2009--HYSBZ - 1878--HH的项链(离线+树状数组or莫队)
题目描述HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳,因此,他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同的贝壳?这个问题很难回答……因为项链实在是太长了。于是,他只好求助睿智的你,来解决这个问题。输入输出格式输入格式:第一行...原创 2018-07-21 17:45:22 · 266 阅读 · 0 评论 -
线段树 - 单点更新/查询,区间更新/查询
区间更新,区间求和:#include <bits/stdc++.h>using namespace std;#define ll long long#define lefs l, m, rt << 1#define rigs m+1, r, rt << 1 | 1#define lef rt << 1#define rig rt ...原创 2019-04-08 09:52:48 · 193 阅读 · 0 评论 -
POJ - 3680 - Intervals(最小费用流解决区间k覆盖问题)
题目链接:http://poj.org/problem?id=3680区间k覆盖问题:数轴上有一些带权值的左闭右开区间,选出权值和尽量大的一些区间,使得任意一个数最多被k个区间覆盖思路:可以用最小费用流解决,构图方法是把每个数作为一个结点,然后对于权值为的区间,加边,容量为1,费用为(因为要使权值和尽量大)。再对所有相邻的点加边 ,容量为k费用为0。最后求最左点到最右点的最小费用最大流即可...原创 2019-04-11 21:49:57 · 229 阅读 · 0 评论 -
欧拉线性筛
bool is_prime[N+5];void Euler_prime(){ int prime[N + 5]; int i, j, c = 0; memset(is_prime, true, sizeof(is_prime)); for(i = 2; i <= N; i++) { if(is_prime[i]) ...原创 2019-08-28 14:19:04 · 118 阅读 · 0 评论 -
POJ - 3255 - Roadblocks (次短路)
题目链接:http://poj.org/problem?id=3255题意:1是起点,n为终点,求次短路。思路:维护最短路的时候更新次短路。当前距离小于最短路,那么当前最短路变成次短路,更新最短路。 若当前距离不能更新最短路,但比次短路小,更新次短路(也就是介于次短路和最短路之间时更新次短路)#include <iostream>#include <strin...原创 2019-08-21 17:58:18 · 212 阅读 · 0 评论 -
POJ- 2104 - K-th Number(主席树)
题目链接:http://poj.org/problem?id=2104思路:静态区间第k小,主席树模板题。#include <cstdio>#include <vector>#include <cstring>#include <iostream>#include <algorithm>using namespace ...原创 2019-08-12 15:36:07 · 141 阅读 · 0 评论 -
HDU - 6629 - string matching(扩展KMP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6629题意:给你一个字符串,让你求对于每一个字符串的后缀(),与匹配最长公共前缀的总次数。思路:对于和做扩展KMP,得到数组(表示与的最长公共前缀),然后从开始统计即可。#include <bits/stdc++.h>#define ll long longusing ...原创 2019-08-05 17:40:51 · 202 阅读 · 0 评论 -
HDU - 3949 - XOR(线性基求第k小的异或和)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3949题意:求第k小的异或和。思路:我们要将线性基改造成每一位相互独立。具体操作就是如果,的第 位是1,就将异或上。经过一系列操作之后,对于二进制的某一位 。只有的这一位是1,其他都是0。所以查询的时候将二进制拆分,对于1的位,就异或上对应的线性基。最终得出的答案就是k小值...原创 2019-07-30 11:42:11 · 501 阅读 · 0 评论 -
P3379 【模板】最近公共祖先(倍增LCA)
题目链接:https://www.luogu.org/problemnew/show/P3379注释:表示节点的级祖先,,表示节点的深度,,表示的值(用来优化常数)。PS:vector存图可能会超时。#include <bits/stdc++.h>using namespace std;const int N = 5e5 + 7;int fa[N][...原创 2019-06-18 20:04:29 · 159 阅读 · 0 评论 -
归并排序求逆序对
#include <bits/stdc++.h>#define ll long longusing namespace std;const int maxn = 5e5 + 7;int n; ll cnt;int a[maxn], b[maxn];void merg(int L,int M,int R){ int i = L, j = M, k = L; ...原创 2019-05-27 21:07:30 · 121 阅读 · 0 评论 -
树状数组离散化求逆序对(模板)
考虑根据值来建树状数组 , 初始树状数组为全0。现在按照序列从左到右将数据的值对应的位置的数加一,代表又有一个数出现。因此,在循环到第项时,前项已经加入到树状数组内了 , 树状数组内比大的都会与构成逆序对,因为它们一定出现的更早,所以产生的逆序对数量为(表示当前比小的个数,为总的个数,相减就是前面,比大的个数了,也就是当前数的逆序对)。当然也可以直接用来求。#...原创 2019-05-03 21:54:27 · 371 阅读 · 0 评论 -
HDU - 6514 - Monitor(二维差分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6514题意:n*m的矩阵,给出p个监控器的监控矩阵范围,q次询问,给出一矩阵,如果能全部监控到输出YES,否则输出NO。思路:二维差分,但是数据比较大开不了二维数组,可以用vector <vector <int> >,或者对于每一个二维hash成一维,然后求一下前缀和,然...原创 2019-04-22 20:03:50 · 530 阅读 · 5 评论 -
P3376 【模板】网络最大流(Dinic)
题目链接:https://www.luogu.org/problemnew/show/P3376#include <iostream>#include <cstring>#include <cstdio>#include <queue>const int N = 1e4 + 7, M = 3e5 + 7, inf = 0x3f3f3f3...原创 2019-04-09 21:00:49 · 213 阅读 · 0 评论 -
HDU - 3667 - Transportation (费用与流量平方成正比的最小费用最大流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3667思路:用拆边法建图,假如货物系数为ai,现在运送的货物从1件到4件费用分别是:ai*1,ai*4,ai*9,ai*16,两两相减得到:ai*1,ai*3,ai*5,ai*7...意思就是运送货物为x件,就是这个等差数列的前x项和,那么我们就可以建边了,假如x城市到y城市路的系数为ai,容量为c...原创 2019-04-11 22:28:52 · 236 阅读 · 0 评论 -
欧拉筛法模板
#include<bits/stdc++.h>using namespace std;const int maxn = 1e6+10;int prime[maxn], p[maxn];int primes(int n){ int top = 0; for(int i = 2; i <= n; i++) { if(!p[i]) p...原创 2018-11-22 20:39:59 · 297 阅读 · 0 评论 -
BM模板
1.0#include <bits/stdc++.h>using namespace std;typedef long long ll;#define rep(i,a,n) for(int i=a;i<n;i++)namespace linear{ ll mo=1e9+7; vector<ll> v; double a[1...原创 2018-10-21 22:12:14 · 280 阅读 · 0 评论 -
P1494 [国家集训队]小Z的袜子(莫队模板)
题目描述作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬。你的任务便是告诉小Z,他有多大的概率...原创 2018-07-24 11:05:00 · 294 阅读 · 0 评论 -
hdu 2544 最短路(Floyd || dijkstra || spfa )模板
#include <stdio.h> #include <algorithm> #include <stdlib.h> #include <string.h> #include <iostream> #include <queue> using namespace std; typede...原创 2018-06-24 18:13:30 · 232 阅读 · 0 评论 -
POJ1458---最长公共子序列(LCS + 滚动优化)模板
表示以和结尾的最长公共子序列的最大长度。#include<iostream>#include<cstring>#include<cmath>#include<cstdio>using namespace std;char s1[1000],s2[1000];int dp[1000][1000];int main(){...原创 2018-06-15 17:45:39 · 228 阅读 · 0 评论 -
HDU-1698-Just a Hook(线段树区间更新+区间求和)
In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is made up of several consecutive metallic sticks which are of the same length. Now Pudge wa...原创 2018-05-20 18:27:19 · 205 阅读 · 0 评论 -
HDU-1542-Atlantis (线段树 + 扫描线 + 离散化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1542There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some of these texts even include maps of parts of th...原创 2018-06-04 17:37:46 · 892 阅读 · 2 评论 -
HDU1257--POJ2533--最长递增子序列(LIS)模板
动态规划写法---时间复杂度:O(n^2)不知道max_element函数的请点击这里表示以结尾的最长递增子序列的长度。#include <stdio.h> #include <algorithm> #include <string.h> using namespace std;int a[1005],dp[1005],n; ...原创 2018-06-11 11:08:58 · 747 阅读 · 5 评论 -
POJ-3667-hotel(线段树区间合并+详解)
The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a vacation on the sunny shores of Lake Superior. Bessie, ever the competent travel agent, has named the ...原创 2018-06-03 11:55:20 · 516 阅读 · 0 评论 -
HDU-1166-敌兵布阵 (线段树单点更新+区间求和)
C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。 中央情报局要研究敌人究竟演习什么战术,所以...原创 2018-05-21 15:42:35 · 187 阅读 · 0 评论 -
POJ-3468-A Simple Problem with Integers (线段树区间更新+区间求和)
You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is to ask for the ...原创 2018-05-21 15:56:43 · 221 阅读 · 0 评论 -
POJ - 3070 - Fibonacci (矩阵快速幂模板)
题目链接:http://poj.org/problem?id=3070#include <stdio.h>#include <math.h>#include <string.h>#include <algorithm>using namespace std;typedef long long ll;const int MAXN = ...原创 2018-05-04 09:20:28 · 223 阅读 · 0 评论