----网络流
扩展的灰
扩展的灰(Extended Ash)
展开
-
最大流模板
#include#include#include#includeusing namespace std;#define MAXN 444 //邻接表要开边数的2倍struct Edge{ int v,cap,next;}edge[MAXN];int level[MAXN];//标记层次(距离标号)//间隙优化,定义gap[i]为标号是i的点的个数//在重标记i时,检原创 2017-11-10 21:40:30 · 211 阅读 · 0 评论 -
一些基础算法的模板(持续更新)
更新中//Templates From Extended_Ash/Cooevjnz/JacaJava/Tubbcrafft//To be continued...//Suffix Automationchar str[N]; int s[N][26],mx[N],f[N],sz[N]; int last=1,cnt=1,n,v[N],r[N],ans=0; inlin原创 2017-10-25 22:05:58 · 3734 阅读 · 0 评论 -
51Nod1442 士兵的旅行
题目看这里一看这种分配式的题目马上联想到网络流顺手一个SAP板子直接0ms上rank1拆点建图x,y1.s->x[i]边权a[i]2.y[i]->t边权b[i]3.对于原图每条边p->q,x[p]->y[q]边权∞4.x[i]->y[i]边权∞#pragma GCC opitmize("O3")#pragma G++ opitmize("O3")#inclu原创 2018-02-22 22:07:25 · 200 阅读 · 0 评论 -
Jzoj5669 排列
有 n 个数 x1 ~xn 。你需要找出它们的一个排列,满足 m 个条件,每个条件形如 x_a 必须在x_b之前。在此基础上,你要最大化这个排列的最大子段和。神题,这里先orz一下当场切掉的神犇wjw看下数据范围,n构图方式,每个点拆开成a[i],b[i]如果x[i]>0,那么S->a[i],b[i]->T连权值为x[i]的边否则,a[i]->b[i]权值为-x[i]的边对原创 2018-04-20 21:29:29 · 231 阅读 · 0 评论 -
51Nod1084 矩阵取数问题 V2
题目看这里一个经典的dp题,典型的错误思想就是做两遍我们考虑直接做,f[i][j][x][y]表示第一次取道i,j这个位置,第二次到了x,y这个位置考虑这个i,j和x,y分别是从哪里转移过来,就可以得到方程f[i][j][x][y]=max(f[i-1][j][x-1][y],f[i][j-1][x-1][y],f[i-1][j][x][y-1],f[i][j-1][x][y-1]原创 2018-04-27 17:03:02 · 311 阅读 · 0 评论