自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KGV093的博客

Revelations and heartaches, make you realize.

  • 博客(23)
  • 收藏
  • 关注

原创 bzoj 3894(最小割)

传送门 经典的建图模型,本蒟蒻赶紧orz。 1.source连p(容量为art),p连sink(容量为science) 2.source连p1(容量为same_art),p1连p及其相邻点(容量为INF) 3.p2连sink(容量为same_science),p及其相邻点连p2(容量为INF) 最后跑一边最小割得到min_cut, ans=sum(art)+sum(same_art)+s

2017-07-31 09:41:04 240

原创 主席树模板

维护n棵1~i的前缀权值线段树,每次查询减一下就好了。 poj 2104就是模板题,裸的静态第k大,需要先离散化,不会的就用lower_bound()多试试,研究研究应该就能懂。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn=1

2017-07-31 09:05:18 211

原创 欧拉线性筛模板

O(n)求欧拉函数φ(i):inline void linear_shaker() { bool vis[maxn]; memset(vis,false,sizeof(vis)); phi[1]=1; for (int i=2;i<maxn;++i) { if (!vis[i]) prime[++tot]=i,phi[i]=i-1; f

2017-07-31 08:58:03 524

原创 扩展中国剩余定理模板

这就是神奇的非互质版CRT,同余方程组中各个模数可能不互质,如果再用以前互质版的做法就会出错(这个的原因我也没有深究,如果有兴趣的小伙伴懂的话欢迎在评论区里指点本蒟蒻)。 对于模数不互质的情况,需要逐个合并方程求解,具体证明如下图: 还是FZU 1402的代码, 非互质版算法同样适用于模数互质的题目,有兴趣的同学可以做一下hdu 1573 FZU 1402:#include<cstdio>

2017-07-31 08:53:10 744

原创 中国剩余定理模板

这个定理有两个版本,下面是互质版(非扩展版)的代码,具体讲解可以参考信息学竞赛数学一本通。做法大概就是: 把一个同余方程组: x≡b1(mod m1) x≡b2(mod m2) x≡b3(mod m3) …… x≡bn(mod mn) 转化成n个同余方程组: x≡0(mod m1) x≡0(mod m2) …… x≡1(mod mi) …… x≡0(mod mn) 每组解

2017-07-31 08:41:25 363

原创 bzoj 3144(最小割)

传送门 最小割,主要考查建边的思路。本蒟蒻也是看了好几位大佬的博客才看懂。比如: 参考1 参考2 (x,y,z)连接(x,y,z+1)容量为f(x,y,z) (x,y,z)连接(x’,y’,z-d)容量为inf,其中 (x,y)与(x’,y’)相邻 然后跑一边最小割即可。注意! 立体图形的点编号不要写成int num(int i,int j,int k) { return (k

2017-07-30 21:13:01 391

原创 bzoj 4517(组合数学)

错排公式: d(n)=(n-1)*(d(n-1)+d(n-2)); ans=C(n,m)*d(n-m); 其中需要预处理阶乘和逆元。 逆元线性递推如下:inv[i]=(mod-mod/i)*inv[mod%i]%mod;/* Staggered Formula: d(n)=(n-1)*(d(n-1)+d(n-2)); ans=C(n,m)*d(n-m);

2017-07-30 19:09:40 253

原创 hdu 3853(期望dp)

传送门 题解: 设dp[i][j]表示从(i,j)走到(n,m)的期望花费,倒推即可。 P.S.小心停留概率为1的情况,必须跳过,否则会除0。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int MAXN=1004;double dp[M

2017-07-30 14:42:05 330

原创 tarjan(SCC)模板

hdu 1269即模板题,缩完点后判断点数是否为1即可。 图论题一定要记着memset(head,-1,sizeof(head))(如果题目不含0号点也可以memset成0),否则就坐等TLE吧。。。#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<stack>using name

2017-07-30 14:17:58 678

原创 bzoj 1179(tarjan缩点+最长路)

传送门 用tarjan缩点后在DAG上跑一个SPFA最长路即可,数组有点多,该memset的一定要memset。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<stack>#include<queue>#include<vector>using namespace std;

2017-07-30 14:12:10 507

原创 codeforces 438D(线段树)

传送门 几乎是线段树模板题,只需进行剪枝:对于区间最大值大于模数的区间才进行模运算。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cstdlib>#define root 1,1,n#define lson rt<<1,l,mid#define rson rt<<1|1,m

2017-07-30 11:12:59 367

原创 hdu 1394(线段树)

传送门 就是线段树维护逆序对数。 当前的ans即上一次的ans+(n-a[i]-1)-a[i]。 a[i]是当前排在队首的元素与后面形成的逆序对数,(n-a[i]-1)是当前排在队首的元素与后面形成的正序对数,将队首移至队尾即将两个交换一下。/* sum=last_sum+(n-a[i]-1)-a[i];*/#include<cstdio>#include<cstring>#i

2017-07-30 09:34:51 265

原创 暑期集训第一阶段总结(附带杂题总结+字符串总结)

杂题学的不太尽人意,虽然涉猎了很多新的知识、方法,但是很多东西没有经过充分的思考,不过这多少帮我发现了一个大问题,也算是有收获吧,后面的改进措施一定要落实,一定要落实,一定要落实!!! 说实话,这两天的字符串学的结果比我想象的要好。虽然有些题没有具体写(比如Aho-Corasick Automation的相关练习),但是绝大多数题目我都弄懂了思想和方法,剩下写的步骤就留给暑假解决。 一晃眼就过了

2017-07-29 21:00:33 353

原创 poj 2155(二维树状数组)

二维树状数组维护差分前缀和(并不知道说准确没有,反正大概就这个意思) 话说这个题在输出格式上挖坑我也是醉了,PE了两次。。。 #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cstdlib>using namespace std;const int maxn=1002;in

2017-07-29 20:14:47 288

原创 倍增LCA模板

poj 1330即一道倍增LCA模板题,注意在倍增往上跳时每个while语句的终止条件,WA了后几次就是因为跳飞了。。。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<vector>using namespace std;const int maxn=10004;int n;

2017-07-29 19:20:11 499

转载 莫比乌斯反演定理的证明

https://www.zhihu.com/question/23764267/answer/26007647 直接去上面这个网址看吧,看一位叫做Syu Gau的大神的证明,写得非常清晰,本人不太会传图片(╯#-_-)╯,所以就不在此处再写一遍了。。。

2017-07-29 19:15:19 1439

原创 bzoj 2301(Mobius)

基本上可以算是一道莫比乌斯反演的模板题,大概就是推出式子然后分块求和。 讲解部分转自:outer_form的博客 大意就是求在a<=x<=b,c<=y<=d,满足gcd(x,y)是k的(x,y)的对数。分析:令g(n,m,k)表示在1<=x<=n,1<=y<=m,满足gcd(x,y)是k的(x,y)的对数。 那么由容斥原理可得ans=g(c,d,k)−g(a−1,d,k)−g(b,c−1,k

2017-07-29 19:06:37 341

原创 C++读入优化模板

正整数:inline int read() { int x=0;char c=getchar(); while (c<'0'||c>'9') c=getchar(); while (c>='0'&&c<='9') x=x*10+c-'0',c=getchar(); return x;}整数:inline int read() { int x=0,f=1;ch

2017-07-29 15:40:09 347 1

原创 Dijkstra+堆优化模板

稳定的最短路算法,除了不能处理负环以外几乎完美无瑕,在SPFA被特殊数据卡的时候也能用。struct NODE { int id,dis; friend bool operator <(const NODE &a,const NODE &b) { return a.dis>b.dis; }};inline void dijkstra(int source)

2017-07-29 15:33:31 501

原创 Dinic模板(附带当前弧优化)

数组定义大小根据题目需要确定,参考了Flaze的博客。大多数最大流最小割的题套上模板再连好边就能过。struct EDGE { int v,nxt,r;}e[maxn*maxn*6<<1];int cur[maxn*maxn],dis[maxn*maxn],head[maxn*maxn],edge=0,source,sink,sum=0;/*inline int read() {

2017-07-29 14:43:57 855 4

原创 KMP模板

hdu 2087即一道模板题,这个没有什么要注意的,处理相关类型的题目一定要灵活运用f[i]的性质。(本人参考的是刘汝佳大神的写法,在蓝书上P212可以找到详细解释)#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int MAX=1004;cha

2017-07-29 14:30:32 265

原创 Manacher模板

hdu 3068即一道Manacher的模板题,使用时记得处理每组新数据之前清空辅助数组b[i](虽然好像这题不memset也不会错)。。。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<climits>using namespace std;const int maxn=110

2017-07-29 14:24:47 382

原创 后缀数组模板

说实话本人蒟蒻一枚第一次写博客就写个这么“高端“的东西感觉并不太合适,如果代码有误请大神多多指教。 具体讲解可以点击这里 还有兴趣的小伙伴可以看看国家集训队的论文,里面详细介绍了后缀数组的各种应用orz。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cstdlib>using

2017-07-29 14:19:31 240

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除