flow

Git 协作流程

Deadly 提交于 2019-12-02 23:51:05
Git 协作流程5 Git 作为一个源码管理系统,不可避免涉及到多人协作。 协作必须有一个规范的流程,让大家有效地合作,使得项目井井有条地发展下去。"协作流程"在英语里,叫做"workflow"或者"flow",原意是水流,比喻项目像水流那样,顺畅、自然地向前流动,不会发生冲击、对撞、甚至漩涡。 本文介绍三种广泛使用的协作流程: Git flow Github flow Gitlab flow 如果你对Git还不是很熟悉,可以先阅读下面的文章。 《Git 使用规范流程》 《常用 Git 命令清单》 《Git 远程操作详解》 全部回复 实验楼管理员 L64 一、功能驱动 本文的三种协作流程,有一个共同点:都采用 "功能驱动式开发" (Feature-driven development,简称FDD)。 它指的是,需求是开发的起点,先有需求再有功能分支(feature branch)或者补丁分支(hotfix branch)。完成开发后,该分支就合并到主分支,然后被删除。 二、Git flow 最早诞生、并得到广泛采用的一种协作流程,就是 Git flow 。 2.1 特点 它最主要的特点有两个。 首先,项目存在两个长期分支。 主分支master 开发分支develop 前者用于存放对外发布的版本,任何时候在这个分支拿到的,都是稳定的分布版;后者用于日常开发,存放最新的开发版。 其次

【网络流24题】魔术球问题

匿名 (未验证) 提交于 2019-12-02 23:49:02
以珠子为点,满足条件就两两连边 那么就是让你求n条路径最多能覆盖多少节点。 众所周知,最小边覆盖=点总数-最大匹配 不会看这里 Link 于是拆点跑二分图即可 大概就是S向x连边 满足条件的点k向x'连边 x'向T连边 有两种方式 1.我们轮流加点,每次在残量网络跑最大流就可以了 2.我们二分答案,每次重新跑最大流 实测前一种更快。 QwQ 输出答案就看哪条边的流量跑满了。 /* @Date : 2019-07-20 15:12:45 @Author : Adscn (adscn@qq.com) @Link : https://www.cnblogs.com/LLCSBlog */ #include<bits/stdc++.h> using namespace std; #define IL inline #define RG register #define gi getint() #define gc getchar() #define File(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout) IL int getint() { RG int xi=0; RG char ch=gc; bool f=0; while(ch<'0'||ch>'9')ch=='-'?f=1:f,ch=gc; while(ch>='0'

【网络流24题】餐巾计划问题

匿名 (未验证) 提交于 2019-12-02 23:49:02
建边有技巧啊,要拆点。 网络流建边的核心规律就是 多做题 一定是从源点到汇点,根据此构建模型即可。 \(dinic\) 实现最小费用流 /* @Date : 2019-07-16 11:10:42 @Author : Adscn (adscn@qq.com) @Link : https://www.cnblogs.com/LLCSBlog */ #include<bits/stdc++.h> using namespace std; #define IL inline #define RG register #define gi getint() #define gc getchar() #define File(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout) IL int getint() { RG int xi=0; RG char ch=gc; bool f=0; while(ch<'0'|ch>'9')ch=='-'?f=1:f,ch=gc; while(ch>='0'&ch<='9')xi=(xi<<1)+(xi<<3)+ch-48,ch=gc; return f?-xi:xi; } template<typename T> IL void pi(T k,char ch=0) { if(k<0)k=-k

mitmproxy初识

匿名 (未验证) 提交于 2019-12-02 23:49:02
   mitmproxy 是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler、Charles的功能。除了命令行形式的控制台,mitmproxy还有两个关联组件:mitmdump和mitmweb。    mitmdump :它是mitmproxy的命令行接口,利用它我们可以对接Python脚本,用Python实现监听后的处理。    mitmweb :它是一个Web程序,通过它我们可以清楚观察mitmproxy捕获的请求。   mitmproxy使用:   终端键入:      $ mitmproxy --listen-host 电脑IP地址 -p 端口号     出现初始界面 手机连上手动代理后出现抓包信息 很好用的教程: https://greenrobot.me/devpost/how-to-debug-android-http-get-started/ 但是!这时会发现mitmproxy不仅抓不到https请求,而且还会阻断https请求! 解决办法:   启动mitmproxy之后,手机网页搜索mitm.it选择匹配的证书下载安装之后就能抓到https的请求了~   虽然只用了一句话就解决这个问题了,但是我试了好久~哭唧唧~这个mitm.it我尝试了好多次才能正常访问~不知道咋回事~   终于弄出来了,给自己呱唧呱唧! 接下来的问题就是

网络流

匿名 (未验证) 提交于 2019-12-02 23:48:02
网络流=带反悔的贪心。――517 个人认为网络流=最大流dinic/费用流板子+玄学意会建图。 对于每条边 \((u,v,w)\) ,建一条相应的反向边 \((v,u,0)\) 。 算法执行时,先从源点s bfs,看看到t最多能流多少,对于每个节点记录它的前驱节点,如果到t的流量不为0,那么从t回溯回s,将每条边的容量减去流量,其反向边的容量加上流量,然后把答案加上所有回溯到的边的流量;否则停止执行,返回结果。最坏复杂度 \(O(nm^2)\) 。 #include<bits/stdc++.h> #define maxn 10005 #define maxm 100005 #define INF 1050000000 using namespace std; template<typename tp> void read(tp& x){ x=0; char c=getchar(); bool sgn=0; while((c<'0'||c>'9')&&c!='-')c=getchar(); if(c=='-')sgn=1,c=getchar(); while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+c-'0',c=getchar(); if(sgn)x=-x; } template<typename tp> void write(tp x){ if(x<0

洛谷P4015 运输问题 网络流24题

匿名 (未验证) 提交于 2019-12-02 23:47:01
看了下SPFA题解,一个一个太麻烦了,另一个写的很不清楚,而且注释都变成了"????"不知道怎么过的,于是自己来一发SPFA算法。 Part 1.题意 M 个仓库,卖给 N 显然是一个最小费用最大流(MCMF)。 Part 2.˼· S c o s t [ i ] [ j n e e d [ j [ n e e d [ j ] . . . I N F n e e d [ j m i n ( h w [ i ] , n e e d [ j ] 0 1……n n+1……n+m 10000 ) T T Part 3.代码 现在代码就好办了 注释给的很清楚 1 #include<iostream> 2 #include<cmath> 3 #include<cstdio> 4 #include<cstring> 5 #include<queue> 6 #include<stack> 7 #include<vector> 8 #include<map> 9 #include<set> 10 #include<algorithm> 11 12 #define I_copy_this_answer return 0; 13 14 using namespace std; 15 16 int n,m,head[1100],size=1; 17 int mmx=1000,mincost

SCUT - 205 - 饲养牛 - 最大流

匿名 (未验证) 提交于 2019-12-02 23:43:01
https://scut.online/p/205 连着做所以一开始就觉得是网络流。 这种至多分配几次的很有网络流的特征。 一开始想从食物和饮料流向牛,但是怎么搞都不对。 其实可以从s流向食物,食物流向牛,牛流向饮料,饮料流向t。 #include<bits/stdc++.h> using namespace std; typedef long long ll; namespace Dinic_Maxflow { /* 备注: 1.检查MAXN与MAXM,注意预留反向边和额外边的位置 2.每次建图的第一次add_edge()前必须先init() 3.不传入第三参数的dinic(s,t)需保证t是最后的结点 */ const int INF=0x3f3f3f3f; const int MAXN=2000; const int MAXM=200000; //注意网络流要预留反向边 int tol; int head[MAXN+5]; struct Edge { int to,next,cap,flow; } edge[MAXM+5]; void init() { //.//用来触发编译错误 tol=2; memset(head,-1,sizeof(head)); } //为了方便使用二分图匹配,默认容量为1,默认反向容量为0 void add_edge(int u,int v,int

[题解] [TJOI2011] 构造矩阵

匿名 (未验证) 提交于 2019-12-02 23:40:02
很容易看出来是道网络流的题目, 要是没有这个字典序最小, 直接建图跑一遍就好了, 考虑如何输出字典序最小的方案 我们可以贪心地去选择, 若当前点可以选0就选0, 不能选0就选1, 有一点像搜索, 但是直接搜索回溯肯定会爆炸, 考虑如何不回溯 用网络流优化, 若当前点选0后面有可行的方案, 直接选0, 若没有可行的方案, 这个点就只能选1了, 考虑到当前点的选择是在前面点已经选择完并确定有了可行解的情况下进行的, 所以这个策略是可行的, 至于时间复杂度的问题, 代码中会讲到 ###include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include <vector> #include <queue> #define itn int #define reaD read #define N 105 #define INF 1000000009 using namespace std; int n, m, r[N], c[N], d[N << 1], S, T, head[N << 1], cur[N << 1], cnt = 1, id[N][N], ans[N][N]; struct edge { int to, next, flow; } e

网络流初步详解2

匿名 (未验证) 提交于 2019-12-02 23:39:01
网络流初步详解 中大致谈了一下最大流的一些算法,其中Dinic是非常重要的,补一句:最大流 == 最小割。 //假设您已经理解了 Dinic算法和EK算法 二者之一。 对于我们原来的网络流,现在给你一个网络,每条边除了有流量(容量)的限制外,还有一个 单位费用 ,经过这条边,我们不仅要符合 可行流 的条件,还要付出一个 费用 = 单位费用和该边流量之积 。 而对于费用流,现在主要可分为 “最小费用最大流” 和 “最大费用最大流” 两种基本题型。(至于最小流一般会出现在有上下界的网络流中,这个会在网络流初步详解3中讲解) 最重要的,上述两种基本题型模板基本相同,并且是以 最大流为前提 。 再次重复:您需要理解了 Dinic算法和EK算法 二者之一,这样你可以在5分钟内学会费用流模板。 我们在这里考虑,为什么不能在Dinic算法的基础上求出费用流。 先说一下,为了满足我们最大流的 “斜对称” 原则,及我们可以反悔,以求出最大流,反边的单位费用稍作处理, 赋值为 -w void add_edge(int x, int y, int z, int c) {// 流量限制z,单位费用c to[++tot] = y, w[tot] = z, cost[tot] = c; nex[tot] = head[x], head[x] = tot; to[++tot] = x, w[tot] = 0,

P4016 负载平衡问题 网络流

匿名 (未验证) 提交于 2019-12-02 23:26:52
P4016 负载平衡问题 题目描述 G n n n个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。 输入输出格式 输入格式: 1 1 n n 2 n n 输出格式: 输出最少搬运量。 输入输出样例 复制 5 17 9 14 16 4 复制 11 说明 1 \leq n \leq 100 1 ≤ n ≤ 1 0 0 这个题目比较简单 #include <cstdio> #include <cstdlib> #include <algorithm> #include <queue> #include <vector> #include <cstring> #include <map> #include <iostream> #define inf 0x3f3f3f3f using namespace std; typedef long long ll; const int INF = 0x3f3f3f3f; const int maxn = 1000 + 10; struct edge { int u, v, c, f, cost; edge(int u, int v, int c, int f, int cost) :u(u), v(v), c(c), f(f), cost(cost) {} }; vector<edge>e; vector<int>G[maxn];