
----网络流
扩展的灰
扩展的灰(Extended Ash)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
最大流模板
#include #include #include #include using 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 · 248 阅读 · 0 评论 -
一些基础算法的模板(持续更新)
更新中 //Templates From Extended_Ash/Cooevjnz/JacaJava/Tubbcrafft //To be continued... //Suffix Automation char 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 · 3808 阅读 · 0 评论 -
51Nod1442 士兵的旅行
题目看这里 一看这种分配式的题目马上联想到网络流 顺手一个SAP板子直接0ms上rank1 拆点建图x,y 1.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 · 239 阅读 · 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 · 274 阅读 · 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 · 358 阅读 · 0 评论