图论
Zookkk
这个作者很懒,什么都没留下…
展开
-
牛客 Birthday 费用流
为了写这道题去学了最大流EK算法,dinic算法,Spfa最小费用流算法,自己好菜,居然还能这样建图思路:将n根蜡烛抽象化n个点,将m个区域抽象为m个点,设一个0号点作为源点,连接n根蜡烛,然后通过题目给出的ai和bi建立蜡烛与区域之间的边,然后m个区域,每个区域都有n条边连向汇点,跑一遍最小费用流即可,最大流提供了反向边给程序一次反悔的机会,并且spfa每次必定能搜索完其所有通路,所以该思路...原创 2019-05-09 19:10:34 · 365 阅读 · 0 评论 -
费用流模板
费用流一般是指最小费用最大流,即保证最大流的情况下争取费用最小,所以把EK最大流的算法边权换成费用,bfs换成spfa就行,需要注意的是加反向边的时候,容量应该是0,费用应该是正向边的相反数。#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3fconst int maxn=5e3+9;struc...原创 2019-05-09 19:23:10 · 186 阅读 · 0 评论 -
网络流最大流模板(EK,dinic)
网络流算法主要用于解决给定一个容量网络和源点,汇点,求最大可通行流量的问题增广路:源点到汇点的一条通路。最大流问题其实就是不断找增广路的问题,我们不断找增广路,直到图中已经没有增广路的时候我们就找到了最大流,需要注意的是我们找到的增广路可能并不是最大流中的增广路,并且由于这一条增广路占用了一些边的容量,所以我们无法正确求得最大流,解决的办法就是给每条边加一个反向边,反向边的作用就相当于给了...原创 2019-05-09 19:36:42 · 355 阅读 · 0 评论 -
Day1 Codeforces Round #561 (Div. 2)(A,B,C,D)&&POJ 3041 Asteroids(最小覆盖点集)
Codeforces Round #561 (Div. 2)A:思路:让一个集合相同姓氏的人的数量尽量少,也就是让相同姓氏的人平分到两个集合当中去,然后简单计算一下就ok了代码:#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3fconst int maxn=1e3+9;int mp...原创 2019-05-24 00:30:36 · 173 阅读 · 0 评论