
模板
wym_king
谁终将声震人间,必长久深自缄默;谁终将点燃闪电,必长久如云漂泊。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[2019HDU多校第一场][HDU 6582][E. Path]
题意: t 组样例,n个点,m条边。i 行a到b距离c. 要求去掉最短路的最小代价。去掉每条路代价等于长度。解:spfa跑出最短路,找出最短路建图,对新图求最小割#include <bits/stdc++.h>#define ll long longusing namespace std;const ll inf = 1e17+7;const ll M = 1000...原创 2019-07-22 21:23:57 · 285 阅读 · 0 评论 -
CF910A The Way to Home SPFA(队列优化)
题意翻译题目描述一只青蛙现在在一个数轴上,它现在要从点 111 跳到点 nnn ,它每次可以向右跳不超过 ddd 个单位。比如,它可以从点 xxx 跳到点 x+ax+ax+a (1<=a<=d)( 1<=a<=d )(1<=a<=d) 。特别的,青蛙只能在有百合花的点上停留。保证点 111 和点 nnn 之间有一些点有百合花。请输出青蛙到达点 nn...原创 2019-03-31 16:58:35 · 293 阅读 · 0 评论 -
【模板】网络最大流 Dinic
复杂度:最差 O((n^2)*m),n表点数,m表边数,实际上应该快不少【模板】网络最大流 #include <bits/stdc++.h>using namespace std;#define ll long long#define INF 0x7ffffffconst int M = 1000005;const int inf = 0x7fffffff;str...原创 2019-04-15 12:43:14 · 152 阅读 · 0 评论 -
2019牛客暑期多校训练营 第三场 F Planting Trees 暴力枚举子矩阵
题意:t个样例, n,m 给一个 n*n 矩形,值为高,求最大子矩阵面积,要求子矩阵中高度差不超过m题解:枚举左边界, 对每个左边界L,枚举右边界R,对左右边界[L,R],维护每行区间最大,最小值。然后枚举下边界 i (1~n)。单调队列q1存最大值下标,要求q1下标对应值严格单调递减,q2存最小值下标,q2中下标对应值严格单调递增,当队列非空且max[ q1[back] ]...原创 2019-07-26 11:28:53 · 187 阅读 · 0 评论 -
2019HDU多校赛第二场 HDU 6599 I Love Palindrome String(回文树+哈希判回文)
题意:多组输入string,判断长度从1 到 len(string)的字串中有 多少 回文串,且前 一半也为回文解:用回文树求出本质不同的回文串,对每个回文串前一半再判断是否为回文。#include <bits/stdc++.h>#define ll long longusing namespace std;typedef unsigned long long ul...原创 2019-07-25 22:33:09 · 201 阅读 · 0 评论 -
POJ - 2195 Going Home 最小费用最大流
题意:多组输入,n行m列矩阵包含相等个数的 ‘m’ 和 ‘ H ’ 每个men要到达Home,每移动一个格子耗费 1,求最小花费。题解:很明显每个人都要到达且移动次数最少,即最小花费最大流。源点->men->Home->汇点建图#include <iostream>#include <stdio.h>#include <que...原创 2019-08-02 09:21:51 · 154 阅读 · 0 评论 -
HDU 6621 (2019杭电第四场 1008) K-th Closest Distance (主席树 + 二分, 求第 k 小绝对值)
题意:给出n m, 表示n个数,m组询问, 每组询问给出 l , r , p ,k 四个数,求[L,R]区间内 |p - a[i]|值第 k 小的数题解:二分答案ans, 那么我们可以确定一个值域 [p-ans,p+ans] ,如果这个区间个数大于k个,那么答案就是合法的,一直二分到最小答案即可。 找区间数的个数可以用主席树实现。#include <bits/stdc++...原创 2019-08-02 16:14:42 · 338 阅读 · 0 评论 -
BZOJ 3676: [Apio2014] 回文串 回文树 模版题
#include <bits/stdc++.h>#define ll long longusing namespace std;const int maxn = 300005; struct PAM{//回文树 int next[maxn][26],fail[maxn],len[maxn],cnt[maxn],S[maxn]; // 一个结点一个本质不同...原创 2019-07-24 21:02:45 · 198 阅读 · 0 评论 -
扩展欧几里得求乘法逆元
void ex_gcd(ll a,ll b,ll &d,ll &x,ll &y){ if(!b){d=a; x=1; y=0;} else { ex_gcd(b,a%b,d,y,x); y-=x*(a/b);}}ll inv(ll a,ll p){//求a关于p的逆元 即除以a%p相当于乘以多少%p ll d,x,y; ex_gcd(a,p,d,x,y); ...原创 2019-07-29 18:27:37 · 212 阅读 · 0 评论 -
2019HDU多校赛第三场 HDU 6608 Fansblog(米勒拉宾判断素数 + 威尔逊定理 )
题意:给一个素数P,求小于P的第一个素数Q!% P 的值。威尔逊定理:即:当且仅当 p为素数时:( p -1 )! ≡ -1 ( mod p )米勒拉宾判素数——大整数是否为素数则找到小于P的第一个素数Q,1*....Q*...*(P-1)%P≡-1,则 1*...*Q%P ≡ -1/( (Q+1)*(Q+2)...*(P-1) )其中除法用逆元(除以一个数取模相当于乘以这...原创 2019-07-29 18:12:15 · 328 阅读 · 0 评论 -
整数开三次方精度问题
long long sqrt3(long long n) { long long l=1,r=(long long)pow(n*1.0, 1.0 / 3) + 1,mid; while(l<=r) { mid=(l+r)>>1; if(mid*mid*mid==n) return mid; else if(mid*mid*mid>n) r=mid-1; ...原创 2019-08-02 09:21:34 · 564 阅读 · 0 评论 -
P3812 【模板】线性基
传送门1.原序列中任意一个数都可以由线性基里面的一些数异或得到;2.线性基里面的任意一些数异或起来都不能得到03.线性基里面的个数唯一,并且保持在性质一的前提下,数的个数最少#include <bits/stdc++.h>#define ll long longusing namespace std;struct L_B{ ll d[61],p[61];...原创 2019-07-23 11:12:28 · 127 阅读 · 0 评论 -
南京网络预选赛 The Preliminary Contest for ICPC Asia Nanjing 2019 H. Holy Grail 多源最短路
链接#include <bits/stdc++.h>#define ll long longusing namespace std;const int MAX_N = 305;ll g[MAX_N][MAX_N]; // 算法中的 G 矩阵int n,m; void init() { for (int i = 0; i < n; ++i) { fo...原创 2019-09-01 19:53:56 · 269 阅读 · 0 评论 -
SPOJ 375 边操作
给一颗树,每条边有一个权值。有两种操作:1、修改某条边的值;2、询问a、b两点路径上边权的最大值。#include <iostream>#include <bits/stdc++.h>using namespace std;#define pii pair<int,int>#define ll long long#define mst(a,b...原创 2019-08-27 20:31:48 · 157 阅读 · 0 评论 -
hdu 3966 树链剖分 点操作
/*by SilverN*/#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#include<cmath>#define LL long longusing namespace std;const int mxn=10001...原创 2019-08-27 20:25:29 · 255 阅读 · 0 评论 -
KMP模板及优化
https://blog.csdn.net/Anoy_acer/article/details/82748344转载 2019-08-23 14:27:36 · 177 阅读 · 0 评论 -
hdu6638 Snowy Smile (最大权值和矩阵、线段树维护最大子段和)
#include <bits/stdc++.h>#define ll long long#define ls rt<<1#define rs rt<<1|1using namespace std;const int maxn = 1e5;struct N{ ll lm,rm,mm,sum;}t[maxn<<2];void p...原创 2019-08-10 00:20:10 · 274 阅读 · 0 评论 -
2019 HDU 多校赛第二场 HDU 6598 Harmonious Army 最小割模型
原文:题意:你要把n个东西划分为A和C两个部分,然后有m对关系。对于第i个关系,表示两个人有关联,如果两个人同时分到A里面,那么权值增加a;如果同时分到C那么权值增加c;如果一个在C一个在A,那么权值增加a/4+c/3 解:要把点集分成两部分,一些和源点在一起,一些...原创 2019-08-02 12:19:11 · 248 阅读 · 0 评论 -
2019 牛客暑期多校训练营 第五场 C generator 1 10进制矩阵快速幂
题意: xi=a⋅xi−1+b⋅xi−2 for all i≥2 求第n项取mod的值 1<n<10^(10^6) 10^9<mod<2*10^9题解:求出 1, 2, 4, 8,次幂接下来就可以求出 10,20,40,80,100 次幂#include <bits/stdc++.h>#include <cstring>...原创 2019-08-02 09:20:42 · 152 阅读 · 0 评论 -
HDU 6624 (2019杭电第五场 1001) fraction (辗转相除求最小分数解 )
题意:分数取模的意义是 a/b = x(mod p),告诉你 p和x,求最小的分数解a/b解:#include <bits/stdc++.h>#define ll long longusing namespace std;void gao(ll pa,ll pb,ll qa,ll qb,ll &x,ll &y){ ll z = (pa+pb-1)/...原创 2019-08-06 10:39:13 · 621 阅读 · 0 评论 -
HDU 6629 (2019杭电第五场 1006) string matching (扩展kmp)
题意: 求字符串s[i…len−1] and s[0…len−1] i>0 最长公共前缀长度求解过程的比较次数题解: 当时一看就直接AC自动机然后用fail指针就行,结果输入字符是ASCII那就超内存了。用扩展kmp求出每一个后缀的最长公共前缀求和即可。注意 当前下标加上最长前缀长度超过字符串长 ans--。因为是求比较次数。扩展KMP解决的问题:定义母串S和子串T,S...原创 2019-08-05 19:45:29 · 676 阅读 · 2 评论 -
2019 牛客多校 第四场 J、free 分层图最短路
基本模型:在图上,有k次机会可以直接通过一条边而不计算边权,问起点与终点之间的最短路径。#include <bits/stdc++.h>using namespace std;#define ll long longconst int N = 1e5+10;const ll INF = 1e17;const int M = 2e5+10;ll cnt, k, ...原创 2019-07-27 18:21:29 · 378 阅读 · 0 评论 -
hdu 2222 AC 自动机 模版(数组实现)
AC 自动机 模版 原文匹配查找时讲错了,其他都挺好(原文博主知错懒得改t个样例,n个单词,一个文本串,求文本串中单词出现的次数。 若给出单词ab,ab 文本ab,匹配数为2若给出 n个不重复的单词和一个文本,问单词的出现次数,则cntword[j]不置-1,且循环条件变为 j !=0。如单词AA , BB CC. 串ooxxCC%dAAAoen....END,则串 AA出现2次...原创 2019-07-17 10:26:02 · 168 阅读 · 0 评论 -
HDU 2389 二分图最大匹配之Hopcroft-Karp优化 O(n^0.5*m)
T个测试用例, 时间time, n个人,接下来n行是坐标 和 每个人的速度 v。 m,接下来m行是 雨伞的坐标。问time时间完就会下雨,这n个人最多有多少能跑到雨伞下。 每把雨伞只能有一个人。二分图最大匹配+Hopcroft-Karp优化模版题这个模版就是你只要往里面加可以连(匹配)的边,然后调用 MaxMatch()就行#include <bits/stdc++.h&...原创 2019-07-12 10:52:20 · 197 阅读 · 0 评论 -
杜教BM---解决线性递推
无论是矩阵快速幂求第n项,还是给出输出前几项求规律的第n项,几乎就没有它做不到的BM推线性递推式,最低阶的复杂度好像是n*n*log(n)。n是输入项数,比高斯消元算快很多。对于k阶递推式至少要输入2k项才能有足够大参数解出方程系数。一阶是只这个递推数列只针对前一项有效,例如a(n+1)=2a(n)。如果是针对前两项,则叫二阶,比如斐波那契数列。又比如 a(n) = 2*a(...原创 2018-09-16 11:57:23 · 982 阅读 · 0 评论 -
分解质因子
void getp(LL n) { //分解质因子 p = 0; for(int i = 2; i * i <= n; i++) { if(n % i == 0) { arr[p++] = i; while(n % i == 0) n /= i; ...原创 2018-09-08 16:33:16 · 300 阅读 · 0 评论 -
模板--LIS
#include <iostream>#include <cstring>using namespace std;const int N=500010;int a[N],dp[N];int n;int LIS(){ dp[1]=a[1]; int len=1; for(int i=2;i<=n;i++) { ...原创 2018-08-29 19:22:38 · 147 阅读 · 0 评论 -
HDU 2586 How far away ?(最长公共祖先 LCA模板题)
离线版本的思路是:每个点都把与它有关的查询放进它的那个vector里,然后对这棵树进行一次dfs,在dfs的过程中直接得出所有查询的答案,复杂度是O(n+q)。具体来说,假设有一个查询u,v,当遍历到u的时候,如果v还没有访问,就先不管这个查询;如果v已经访问过了,则由于进行的是深度优先搜索,当前结点与v的最近公共祖先一定还没有检查过,然而这个最近公共祖先的包含v的子树一定已经搜索过了...原创 2018-08-19 21:20:07 · 301 阅读 · 0 评论 -
欧拉函数(欧拉筛)--模板
求单个欧拉函数int euler(int x){ int ans = x; for(int i = 2;i*i<=x;i++){ if(x%i==0)ans-=ans/i; while(x%i==0)ans/=i; } if(x>1)ans-=ans/x; return ans;}欧拉筛//...原创 2018-08-22 15:23:19 · 962 阅读 · 0 评论 -
POJ 3264 Balanced Lineup (RMQ模板题)
传送门 #include <algorithm>#include <stdio.h>using namespace std;const int maxn=50005;int a[maxn];int dp[maxn][20];int dp2[maxn][20];int n;void init(){ for(int i=1;i<=n;i...原创 2018-08-19 17:00:47 · 190 阅读 · 0 评论 -
RMQ——模板
RMQ(rang minimun/maximun query,区间最佳查询)的主要思想是动态规划。假设有序列a,其长度为n。定义dp状态dp[i][j],代表从a[i]开始,长度为2^j的区间的最值。则对于一次询问:查询[L,R]的最值,就是max/min( dp[ L ][ k ], dp[ R-(2^k)+1 ][ k ] ),其中k是满足(2^k)<= R-L+1(区间长度)...原创 2018-08-19 16:38:19 · 261 阅读 · 0 评论 -
母函数--1~n 无限 组成n的方法数 --模板
#include <bits/stdc++.h>//1~n_Num 无限组成n_Num的方法数 using namespace std;const int maxn=10001;int c1[maxn],c2[maxn];//c1保存各种组合的方法数 //c2是中间变量 int main(){ int n_Num,i,j,k; while(~scanf("%d",...原创 2018-08-16 17:05:25 · 336 阅读 · 0 评论 -
母函数(Generating function)详解
在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。母函数可分为很多种,包括普通母函数、指数母函数、L级数、贝尔级数和狄利克雷级数。对每个序列都可以写出以上每个类型的一个母函数。构造母函数的目的一般是为了解决某个特定的问题,因此选用何种母函数视乎序列本身的特性和问题...转载 2018-08-16 17:02:12 · 5935 阅读 · 0 评论 -
快速幂 矩阵快速幂--模板
//O(nlogn)long long quickmul(int a,int b){ long long ret=1; for(; b ; b >>=1 ,a =(long long) a * a % mod) if((b & 1)) ret=ret * a % mod; return ret;} 矩阵快速幂#include <bit...原创 2018-08-16 09:52:12 · 144 阅读 · 0 评论 -
素数(线性)筛 + 合数分解
//素数筛 + 合数分解// O(n) #include <bits/stdc++.h>using namespace std; const int MAXN=10000; int prime[MAXN+1]; int is_prime[MAXN+1]; void getPrime() { memset(is_prime,0,sizeof(is_prime));...原创 2018-10-15 19:11:49 · 477 阅读 · 0 评论 -
树状数组区间修改
//c2[n] = (n-1)*c1[n];//sum(1,k)=k*(c1(1)+c1(2)+c1(3)+…+c1(k))-(0*c1*(1)+1*c1(2)+2*c1(3)+…+(k-1)*c1(k))。#include <bits/stdc++.h>#define ll long long#define LEN 1000000using namespace st...原创 2019-03-04 20:28:54 · 156 阅读 · 0 评论 -
POJ 2891 中国剩余定理扩展 模版
POJ 2891 扩展欧几里得 扩展中国剩余定理 两篇写的很好x=a1∗x1+b1x=a2∗x2+b2a1,a2是模数,b1,b2是余数。 求x, 模数不互质。#include<iostream>using namespace std;#define ll long longconst int maxn=1e5+5;int n;ll exgcd(ll a,l...原创 2019-07-15 14:51:51 · 138 阅读 · 0 评论 -
bzoj 2120 数颜色 带修莫队
题解: // Q L R询问 L到R区间不同颜色数// R P col 将R位置的颜色改为col #include <bits/stdc++.h>#define ll long longusing namespace std;const int maxn = 1000005;//unit = n^(2/3) O(n^(5/3))struct Tim{int l,r,...原创 2019-07-04 15:09:26 · 134 阅读 · 0 评论 -
LightOJ - 1197 区间素数筛模版
给t给样例,每个样例a,b两个数,求区间[a,b]内素数的个数,(1 ≤ a ≤ b < 2^31, b - a ≤ 100000).区间很大,区间差不大// LightOJ - 1197 区间素数筛#include <bits/stdc++.h>#define ll long longusing namespace std;const int maxn =...原创 2019-07-13 19:43:45 · 283 阅读 · 0 评论 -
【BZOJ 1503】郁闷的出纳员【权值线段树】
维护全局信息,结点记录该值出现的次数。支持全局k最小值,可增加删除,查找前驱,后继。相对平衡树,代码简单,快。当数据较大时,需要离散化。本题维护一个偏移量,当 A 操作时,不全都加工资 add+=x, S 操作 add-=x 。插入时x - add即可,这样仍然是全局偏移量。输出+add - base就行,base 是防止负数出现#include <bits/std...原创 2019-07-03 20:59:43 · 278 阅读 · 0 评论