- 博客(11)
- 收藏
- 关注
原创 bzoj1877 晨跑
红果果的最小费用最大流模板 从x到y连一条边,容量为1(因为路只能走一遍),权值为k。 但是要注意一点就是不能走重复的路线,所以在一个周期内,每天的晨跑路线都不会相交(在十字路口处) 所以把每个点拆成入点和出点,容量为1,权值为0就可以保证每个点只访问一遍啦233 对于起点为1或者是终点为n的路要特殊处理一下,因为学校和宿舍不视为十字路口#include <iostream> #incl
2017-04-29 15:12:06 286
原创 最小费用最大流
给出一个容量网络,那他的最大流一定是一个定值(即使是有多个一样的最大值)。 所以我们从开始的可行流开始增广时,最终的增广量是一定的。 所以为了满足最小费用我们只需要每次找最小费用的增广路即可,直到流量为最大值。 这个问题仅仅是在求增广路时先考虑费用最小的增广路,其他思想和EK思想一样。 我们学过SPFA求最短路算法(bellman-ford的队列优化),所以我们将弧的费用看做是路径长度,即
2017-04-28 17:36:42 344
原创 bzoj 1066蜥蜴
作为在bzoj上的第一题,感觉很伤233 第一道不是板子的最大流 这个建边要用到点 石柱的高度其实就是能经过蜥蜴的个数 将石柱拆分成两个点一个入点,一个出点,其容量就是石柱的高度了 如果两个石柱两两可以到达,那么在A的出点向B的入点建一条边,其容量为INF,来模拟蜥蜴跳过去的过程 虚拟两个点,一个为源点s,一个为汇点t,如果石柱上有蜥蜴的话,从s到石柱的入点连一条边,容量为1,表
2017-04-23 11:43:58 290
原创 最小割
首先感谢这个博客讲的很明白 链接 割的定义 C[S,T]是将网络G分为s和t两部分点集 S属于s且T属于t 从S到T的边的全集 在这张图中,割即为s–>1这条边与3–>2这条边 在网络流中,最大流等于最小割(最小割为割去的边的容量) 首先任意一个流小于等于任意的一个割 打个比方源点相当于自来水厂而汇点相当于你的家,有人不想让你的家有水喝,那就必然要砍掉几根 tube让你的家里断水
2017-04-23 09:52:09 366
原创 很玄学的最大流(模板)
先来一发最简单的Ford-Fulkerson 邻接矩阵版#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<queue>using namespace std;const int INF=0x7ffffff;int map[999][999];bool f[999];in
2017-04-20 16:06:25 326
原创 2017SDOI游记
作为一个蒟蒻,去见了见世面,没有一个题想到了正解,全都是暴力过样例啦2333 最后骗了30回来了 蒟蒻写游记就这么点23333
2017-04-16 11:14:37 939
原创 AC自动机
2018-4-2重新编辑作为一个蒟蒻的我,终于学习了AC自动机。 其实之前我以为AC自动机是自动AC的呢!(手动滑稽) 其实AC自动机啊,是字符串匹配中的多匹配问题的基础2333 举个栗子 母串 hychycxyxy 三个匹配串 hyc chy cxyy 有两个是母串的子串2333 如果匹配串只有一个的话,那就用KMP喽,可是这个是很多个匹配串咋办呢 那就得请出炒鸡厉害...
2017-04-16 10:58:13 860
原创 杂务安排
题目描述 John的农场在给奶牛挤奶前有很多杂务要完成,每一项杂务都需要一定的时间来完成它。比如:他们要将奶牛集合起来,将他们赶进牛棚,为奶牛清洗乳房以及一些其它工作。尽早将所有杂务完成是必要的,因为这样才有更多时间挤出更多的牛奶。当然,有些杂务必须在另一些杂务完成的情况下才能进行。比如:只有将奶牛赶进牛棚才能开始为它清洗乳房,还有在未给奶牛清洗乳房之前不能挤奶。我们把这些工作称为完成本项工作
2017-04-16 08:16:52 464
原创 KMP
KMP是字符串的单匹配算法,判断一个字符串是不是另一个字符串的子串。 处理next数组void find(){ int len=strlen(s2); int t1=0,t2=-1; net[0]=-1; while(t1<len) { if(t2==-1||s2[t1]==s2[t2]) net[++t1]=++t2
2017-04-16 08:07:34 312
原创 灾后重建
QAQ 对弗洛伊德的优化233#include <cstdio>#include <iostream>#include <cstring>#define inf 0x3f3f3f3fusing namespace std;int map[300][300];int t[999];int main(){ int n,m,k; memset(map,0x3f,sizeo
2017-04-05 19:10:04 220
原创 最大数
QAQ 鹅鹅鹅饿鹅鹅鹅 虽说这个题啊,可以用线段树做,可是老师说不太好23333。 单调栈的作法,维护一个单调递减的栈(因为要找的是最大值啊,后面的比前面的大了前面的就没意义了不是么)#include <cstdio>#include <iostream>using namespace std;int p;int a[999999],b[9999999];//a代表编号所代表的数,b为
2017-04-05 16:05:58 261
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人