flow

Gym - 102346G Getting Confidence 最小费用最大流

爷,独闯天下 提交于 2019-12-01 22:23:15
Gym - 102346G Getting Confidence 题意:n*n的格子,每个格子上有一个数,要求每行每列都只能拿一个数,使得乘积最大,然后输出每列选择的是第几行的数。 如果是加法的话,那么很明显,就是一个网络流。可是,现在是乘法怎么办,很简单,直接取log,那么乘法便转换成了加法,然后就可以建图。 每行每列只能取一个数,就相当于行列是拆开的点,因为需要输出的是列的信息,那么源点向每一列建一条流量为1,费用为0的边,而每一行向汇点建一条流量为1,费用为0的边。 再对于每个格子,每一列向它这一列的格子建一条流量为1,费用为0的点,而每个格子向它所在的行建一条流量为1,费用为-log(格子上的数)的边。 最后跑一遍最小费用最大流,看一下每一列的那条边流量为0 1 #include<cstdio> 2 #include<cmath> 3 #include<queue> 4 #include<algorithm> 5 using namespace std; 6 const int N=2e4+11,M=1e6+11,inf=1e9+7; 7 struct Side{ 8 int v,ne,w; 9 double val; 10 }S[M<<1]; 11 double dis[N]; 12 int n,sn,sb,se,head[N],vis[N],flow[N],lu[N];

P3731 [HAOI2017]新型城市化

巧了我就是萌 提交于 2019-12-01 20:33:06
洛谷 题意: 给出两个最大团的补图,现在要求增加一条边,使得最大最大团个数增加至少 \(1\) 。 思路: 我们求出团的补图,问题可以转换为:对于一个二分图,选择删掉一条边,能够增大其最大独立集的点集数。 然后做法就是考虑在最大流的残余网络上,对容量为 \(1\) 的边求强连通分量(包含源点、汇点)。 若存在一条边 \((x,y)\) 为匹配边,并且 \(x,y\) 在不同的强连通分量中,那么 \((x,y)\) 这条边为必经边,即最大匹配中包含这条边;若 \((x,y)\) 为非匹配边并且 \(x,y\) 在同一强连通分量中,那么 \((x,y)\) 为最大匹配的可行边,即这条边存在于至少一个最大匹配中。 证明的话,就拿必经边来说,若 \((x,y)\) 在同一强连通分量中,我们去掉 \(x,y\) 这条边,还是有增广路径能从 \(x\) 到 \(y\) ,此时最大匹配没变并且 \((x,y)\) 流量为 \(0\) 。所以 \((x,y)\) 不能在同一强连通分量中。 注意一开始要对图进行二分图染色。 代码如下: #include <bits/stdc++.h> #define MP make_pair #define fi first #define se second #define sz(x) (int)(x).size() #define all(x) (x)

css3 display 详解

孤街醉人 提交于 2019-12-01 18:26:27
从大的分类上讲,display的32种写法可以分为6个大类,再加上一个全局类,一共是7个大类: 1 外部值 2 内部值 3 列表值 4 属性值 5 显示值 6 混合值 7 全局值 一 外部值 所谓外部值,就是说这些值只会直接影响一个元素的外部表现,而不影响元素里面的儿子级孙子级元素的表现。 display: block; 这个值大家不陌生,我们最熟悉的 <div>缺省就是这个值,最基本的块级元素,属于 css入门初学者都知道的概念,只要是容器类型的元素基本都是这个值。除 <div>之外,还有 <h1>到 <h6>, <p>, <form>, <header>, <footer>, <section>, <article>天生都是这个值。 display: inline; 这个值大家也不陌生,行内元素嘛,只要是个行内元素都是这个值,最典型的是 <span>,还有 <a>, <img>,以及古代 html语言当中的 <b>, <i>都属于这一类型。 display: run-in; 这个值有点奇怪,通常没人用它,但你可以知道它。因为除了 IE和 Opera支持它以外,其他所有主流浏览器包括 Chrome, Safari, Firefox全都对它置若罔闻。这东西说白了也没什么神秘,它的意思就是说如果我们命令一个元素 run-in,中文意思就是『 闯入』!那么这个元素就直接闯入下一行。 二

P2691 逃离

烈酒焚心 提交于 2019-12-01 16:31:57
这题是一个裸的网络流的题,但是本蒟蒻还是调试了半天2333.总是犯低级错误。 一开始我是用EK算法实现的。结果如下: 然后我又用Dinic算法实现了一下。 发现更慢了2333.我也不知道为啥,按道理Dinic应该比EK快的不知道到哪里去了才对。 下面是我的代码实现: EK算法: #include <bits/stdc++.h> using namespace std; #define re register inline long long read() { char ch = getchar(); long long x = 0, f = 1; while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar(); } while('0' <= ch && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); } return x * f; } const int N = 36000,M = 5000000; struct line { int v; int cap; int nxt; } datas [M]; int head [N],cnt = 1; inline void add (int a,int b,int c) { ++ cnt; datas [cnt]

【题解】Ples [COCI2011]

霸气de小男生 提交于 2019-12-01 13:23:56
【题解】Ples [COCI2011] 依旧是没有传送门,只有提供了 数据 的 官网 。 【题目描述】 \(N\) 个汉子和 \(N\) 个妹纸一起参加舞会,跳舞时只能是一个汉子一个妹纸配对,现在给出每个人的身高,任意一个人都只想和比 \(\text{ta}\) 高(矮)的人跳,身高一样的人都不想与对方跳。输出满足人们愿望的前提下可组成的最多对数。. 【输入】 第一行一个数 \(N\) 表示汉子和妹纸的个数。 第二行 \(N\) 个整数,其绝对值表示 \(N\) 个汉子的身高 \(h\) , \(h\) 为正数表示他想与比自己高的人跳,负数则相反。 第三行 \(N\) 个整数,表示妹纸,其它与第二行相同。 【输出】 一个数,表示组成的最多对数。. 【样例】 样例输入: 1 -1800 1800 样例输出: 0 样例输入: 1 1700 -1800 样例输出: 1 样例输入: 2 -1800 -2200 1900 1700 样例输出: 2 【数据范围】 \(100 \%:\) \(1 \leqslant N \leqslant 100000,\) \(1500 \leqslant h[i] \leqslant 2500\) 【分析】 乍一看:我 \(c\) ,开局就上送分板子题。 恩恩?不对不对,光是建图就要体验 \(n\) 方卡百万。 再一看: \([1500,2500]\)

dij 费用流

若如初见. 提交于 2019-12-01 11:40:12
#include <bits/stdc++.h> using namespace std; typedef long long lld; const int MAXN = 50010, MAXM = 1000010, INF = 0x3f3f3f3f; struct Edge { int to, next, cap, flow, cost; } edge[MAXM]; int head[MAXN], tol, pre[MAXN], dis[MAXN], h[MAXN]; struct Node { int x, dis; bool operator<(Node b) const { return b.dis < dis; } }; priority_queue<Node> Q; void init() { tol = 0; memset(head, -1, sizeof(head)); } void addedge(int u, int v, int cap, int cost) { edge[tol] = (Edge){ v, head[u], cap, 0, cost }; head[u] = tol++; edge[tol] = (Edge){ u, head[v], 0, 0, -cost }; head[v] = tol++; } bool dijkstra(int s,

flow text around a transparent png with css/jquery/anything

删除回忆录丶 提交于 2019-12-01 11:33:22
For now, i have: <img style="float:right;" src="/path/to/image.png"> <p>lorem ipsum dolor</p> Which nicely sets the image right and the text around it. Is it, however, possible to 'flow' text around the actual contents of an png image, ignoring the transparancy? It now looks like this: I would like it to look like this: Possibilities i see: 1) Manually add breaks Almost impossible for dynamic content; 2) Have php add breaks after a set number of characters Very complex, and it would need to be determined for every image; 3) Another way someone here knows about Does anyone have any experience

POI2010 Bridges

依然范特西╮ 提交于 2019-12-01 09:08:00
问题描述 YYD为了减肥,他来到了瘦海,这是一个巨大的海,海中有n个小岛,小岛之间有m座桥连接,两个小岛之间不会有两座桥,并且从一个小岛可以到另外任意一个小岛。现在YYD想骑单车从小岛1出发,骑过每一座桥,到达每一个小岛,然后回到小岛1。霸中同学为了让YYD减肥成功,召唤了大风,由于是海上,风变得十分大,经过每一座桥都有不可避免的风阻碍YYD,YYD十分ddt,于是用泡芙贿赂了你,希望你能帮他找出一条承受的最大风力最小的路线。 输入格式 输入:第一行为两个用空格隔开的整数n(2<=n<=1000),m(1<=m<=2000),接下来读入m行由空格隔开的4个整数a,b(1<=a,b<=n,a<>b),c,d(1<=c,d<=1000),表示第i+1行第i座桥连接小岛a和b,从a到b承受的风力为c,从b到a承受的风力为d。 输出格式 输出:如果无法完成减肥计划,则输出NIE,否则第一行输出承受风力的最大值(要使它最小) 样例输入 4 4 1 2 2 4 2 3 3 4 3 4 4 4 4 1 5 4 样例输出 4 提示 注意:通过桥为欧拉回路 解析 题目要求最大承受风力的最小值,那很明显是二分答案。 二分答案后这个图就会变成一个混合图(也就是既有单向边也有双向边的)。然后只需要判断这个混合图是否为欧拉回路即可。 具体的我们使用网络流模型。设d[i]表示一个点入度减出度的值

Magic Potion(网络流)

馋奶兔 提交于 2019-12-01 08:49:56
  2018南京的铜牌题,听说学长他们上来就A了,我这个图论选手也就上手做了做,结果一言难尽......   发此篇博客希望自己能牢记自己的菜...      本题大意:有n个heros和m个monsters大战,每个heros只能杀一个monsters且他们只能杀固定编号的monsters,现在有药水k瓶,如果英雄喝了药水那么它又可以多杀一个怪兽,每个英雄最多能喝一瓶药水。现在给你n, m, k,还有n个英雄各自能击杀怪兽的编号,问这些英雄最多能杀多少怪兽。   题解太水,大佬请绕道。。。   我用的网络流,别的都是正常思路,唯一一点就是,药水这个点,我们可以考虑从超级源点起向另一个源点引一条容量为k的边,从这个源点向英雄连一条容量为1的边表示药水。   千万不要像傻逼的我。。。   下面介绍一下我的做法。。。超级源点给附加源点提供药水,然后附加源点给英雄,英雄有一个初始能量?哦好了那我们把英雄拆点成a1, a2,给他a2一个能量就可以了,然后让a2代替英雄做该做的事,具体做法是附加源点给a1药水,a1自己本来有一个能量然后还可以接收药水(起始流量为1,容量为2),a2去打怪兽,然后向超级汇点统计。。。。。。   总的来说我的做法就可以描述为,正解的初始能量是超级源点给的,这本来也是常规思路,我个杠精非得拆点让他兄弟给,至今不明白为什么错了,堪忧。   哦对了

打造自己的代理抓包工具

痞子三分冷 提交于 2019-12-01 08:11:12
python3 环境 pip install mitmproxy# 创建mit.py 文件 from mitmproxy import ctx# 所有发出的请求数据包都会被这个方法所处理# 所谓的处理,我们这里只是打印一下一些项;当然可以修改这些项的值直接给这些项赋值即可def request(flow): # 获取请求对象 request = flow.request # 实例化输出类 info = ctx.log.info # 打印请求的url info(request.url) # 打印请求方法 info(request.method) # 打印host头 info(request.host) # 打印请求端口 info(str(request.port)) # 打印所有请求头部 info(str(request.headers)) # 打印cookie头 info(str(request.cookies))# 所有服务器响应的数据包都会被这个方法处理# 所谓的处理,我们这里只是打印一下一些项def response(flow): # 获取响应对象 response = flow.response # 实例化输出类 info = ctx.log.info # 打印响应码 info(str(response.status_code)) # 打印所有头部 info(str