flow

罗技鼠标黑科技

安稳与你 提交于 2020-02-03 01:01:32
我买的罗技鼠标静音,运用flow技术,一个鼠标直接在两台电脑上共享文件。 最近罗技上的接收器坏了,才发现罗技的youlian技术,就是接收器和鼠标解耦了。 来源: https://www.cnblogs.com/sexintercourse/p/12254404.html

网络流学习笔记

随声附和 提交于 2020-02-02 00:37:36
最大流 ​ 我再次博客上暂不叙述预留推进(SAP), 事实是,我不会 ,暂且搁置,以后会补充 ​ 最大流在实际问题中的应用是,你要从一个源点s送水至汇点t,这些点中有水管链接,水管的最大能通过的水有不同,让你求单位时间内你最多能送多少水。 ​ 我们的流网络可以理解为一群有向边图 ​ 一些想法 ​ 我们定义 \(f(u,v)\) 为u节点到v节点的流量。, \(c(u,v)\) 为u节点到v节点的流量限制 ​ 首先我们由于不能爆水管,有这个显而易见的式子 \[ 0 \le f(u,v) \le c(u,v) \] ​ 其次我们来,思考一下对于每个节点的的流出和流入,显然的我们可以把KCL(即Kirchhoff's Current Law),推广到oi界上,我们有 \[ \sum _{v\in V} f(v,u)=\sum_{v \in V} f(u,v) \] ​ 想法结束进入正题 ​ 经过度娘的帮助,我们知道一种叫做增广路的东西,在一个残余网络(就是说某些管子已经有水了),就是说从源节点到汇节点的一条能走水的路径 ​ 这样我们知道,假如,我们一遍又一遍的操作之后,没有增广路可以找了,那么我们必定求出了最大流 ​ 然而怎么寻找增广路,这是一个问题。 ​ 经过思考之后我们可以用一个十分暴力的思想来解决,进行深搜,主要思想是 我们可以每一次从原点开始深搜 搜到汇节点

P3329 [ZJOI2011]最小割

元气小坏坏 提交于 2020-02-01 19:54:29
题目描述 小白在图论课上学到了一个新的概念——最小割,下课后小白在笔记本上写下了如下这段话: 对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点 s 和 t 不在同一个部分中,则称这个划分是关于 s,t 的割。对于带权图来说,将所有顶点处在不同部分的边的权值相加所得到的值定义为这个割的容量,而 s,t的最小割指的是在关于 s,t的割中容量最小的割。 现给定一张无向图,小白有若干个形如“图中有多少个无序点对的最小割的容量不超过 x ”的疑问,小蓝虽然很想回答这些问题,但小蓝最近忙着挖木块,于是作为小蓝的好友,你又有任务了。 输入格式 本题有多组测试数据。 第一行一个整数 T,表示测试数据组数。 对于每组测试数据,第一行两个整数 n,m,表示图的点数和边数。 接下来 m 行,每行三个整数 u,v,c表示有一条权为 ccc 的无向边 (u,v)。不保证图中无重边。 接下来一行一个整数 q 表示询问的个数,下面 q 行每行一个整数 x 描述一组询问。 输出格式 对于每一组测试数据输出 q 行,每行一个整数表示对应询问的答案。对于满足条件的点对 (p,q)和点对 (q,p) 只应该在答案中统计一次。 在两组测试数据之间需要输出一行空行。 输入输出样例 输入 #1 1 5 0 1 0 输出 #1 10 说明/提示 对于 100 的数据,1≤T≤10 ,1≤n≤150,0≤m

P3254 圆桌问题(最大流板子,求二分图多重最大匹配的值)

吃可爱长大的小学妹 提交于 2020-02-01 13:16:52
题目描述 假设有来自m 个不同单位的代表参加一次国际会议。每个单位的代表数分别为ri (i =1,2,……,m)。 会议餐厅共有n 张餐桌,每张餐桌可容纳ci (i =1,2,……,n)个代表就餐。 为了使代表们充分交流,希望从同一个单位来的代表不在同一个餐桌就餐。试设计一个算法,给出满足要求的代表就餐方案。 对于给定的代表数和餐桌数以及餐桌容量,编程计算满足要求的代表就餐方案。 输入格式 第1 行有2 个正整数m 和n,m 表示单位数,n 表示餐桌数,1<=m<=150, 1<=n<=270。 第2 行有m 个正整数,分别表示每个单位的代表数。 第3 行有n 个正整数,分别表示每个餐桌的容量。 输出格式 如果问题有解,第1 行输出1,否则输出0。接下来的m 行给出每个单位代表的就餐桌号。如果有多个满足要求的方案,只要输出1 个方案。 输入输出样例 输入 #1 复制 4 5 4 5 3 5 3 5 2 6 4 输出 #1 复制 1 1 2 4 5 1 2 3 4 5 2 4 5 1 2 3 4 5 理论基础看这里 最大流理论(1)二分图多重最大匹配:在原图上建立源点S和汇点T,S向每个X点连一条容量为该X点L值的边,每个Y点向T连一条容量为该Y点L值的边,原来二分图中各边在新的网络中仍存在,容量为1(若该边可以使用多次则容量大于1),求该网络的最大流,就是该二分图多重最大匹配的值。

[USACO09JAN]全流Total Flow

最后都变了- 提交于 2020-01-31 12:46:52
题目描述 Farmer John always wants his cows to have enough water and thus has made a map of the N (1 <= N <= 700) water pipes on the farm that connect the well to the barn. He was surprised to find a wild mess of different size pipes connected in an apparently haphazard way. He wants to calculate the flow through the pipes. Two pipes connected in a row allow water flow that is the minimum of the values of the two pipe's flow values. The example of a pipe with flow capacity 5 connecting to a pipe of flow capacity 3 can be reduced logically to a single pipe of flow capacity 3: +---5---+---3---+ -> +-

AC日记——[USACO09JAN]全流Total Flow 洛谷 P2936

隐身守侯 提交于 2020-01-31 12:45:11
题目描述 Farmer John always wants his cows to have enough water and thus has made a map of the N (1 <= N <= 700) water pipes on the farm that connect the well to the barn. He was surprised to find a wild mess of different size pipes connected in an apparently haphazard way. He wants to calculate the flow through the pipes. Two pipes connected in a row allow water flow that is the minimum of the values of the two pipe's flow values. The example of a pipe with flow capacity 5 connecting to a pipe of flow capacity 3 can be reduced logically to a single pipe of flow capacity 3: +---5---+---3---+ -> +-

Java Flow API 的实践(二):Publisher的简单封装

六眼飞鱼酱① 提交于 2020-01-31 00:11:41
Java Flow API 的实践(二):Publisher的简单封装 概述 从前一篇文章中可以看到,使用 Publisher 的其中一种方式就是直接写一个类实现 Publisher 接口,在该类中实现对应的业务逻辑。不过按照这种方式实现,对于一些临时性的功能会产生大量一次性的类。一种解决方式就是像RxJava的创建操作符那样,将实际操作过程抽象出去。本文就按照后一种方式来封装。 实现效果如下: Flow . Publisher < Integer > publisher ; /* 1.从数组创建 */ publisher = Flows . fromArray ( new Integer [ ] { 1 , 2 , 3 , 4 } ) ; /* 2.从可迭代集合创建 */ publisher = Flows . fromIterable ( Arrays . asList ( 1 , 2 , 3 ) ) ; /* 3.从Callable创建 */ publisher = Flows . fromCallable ( ( ) - > 1 ) ; /* 4.从可变参数创建 */ publisher = Flows . from ( 1 , 2 , 3 ) ; /* 5.通过Emitter实现 */ publisher = Flows . create ( emitter - > {

网络流模板

耗尽温柔 提交于 2020-01-30 12:18:48
转自 https://www.cnblogs.com/rmy020718/p/9546071.html int deep[N+1]; int q[N+1]= {0},h,t; int cur[N+1]; bool bfs(int S,int T) { for (int i=0; i<=n; i++) deep[i]=0; //初始化深度为0 h=t=1; q[1]=S; deep[S]=1; while (h<=t) { for (int i=lin[q[h]]; i; i=e[i].next) if (!deep[e[i].y]&&e[i].v) //若未计算过深度且这条边不能是空的 { q[++t]=e[i].y; //入队一个节点 deep[q[t]]=deep[q[h]]+1; //计算深度 } ++h; } if (deep[T]) return true; else return false; } int dfs(int start,int T,int minf) { if (start==T) return minf; //若到了汇点直接返回前面流过来的流量 int sum=0,flow=0; for (int &i=cur[start]; i; i=e[i].next) //当前弧优化,运用指针在修改i的同时,将cur[start]顺便修改 if (e[i].v&

Kotlin Flow与ChannelFlow

二次信任 提交于 2020-01-30 03:24:48
通过Kotlin的Flow可以轻松实现生产者消费者模型。Flow默认是Cold的,生产者和消费者的通信是同步非阻塞的,也就是生产和消费会顺序交替进行 suspend fun productor() = flow<Int> { for (i in 1..10) { delay(100) emit(i) println("produce $i") } } fun main { runBlcking { productor().collect { delay(100) println("custom $it") } } } 完成全部过程大约需要2s,因为生产者消费者按照下面顺序进行 如果,我们希望生产者消费者两端能够实现异步非阻塞模型呢?此时可以使用ChannelFlow,顾名思义ChannelFlow中和了Coroutine Channel和Flow的优点:比Channel更冷(collect之后才触发生产)比Flow更热(生产消费可以并行执行) suspend fun productor() = channelFlow<Int> { for (i in 1..10) { delay(100) send(i) //emit 变为 send println("produce $i") } } 此时,完成整个过程只需要1s左右,生产和消费两端实现了并行执行。 来源: CSDN 作者:

【Luogu】P1402 酒店之王 题解

半城伤御伤魂 提交于 2020-01-30 01:05:22
原题链接 这道题,很明显是个配对问题。于是,我们可以想到用网络最大流来做。 先整理一下题目条件。 很明显,根据贪心思想,要使最多人满意,每个人应该最多睡一个房间(似乎也没有人能睡两个房间),吃一道菜。这就要求一个人最多与一个房间、一道菜配对。 每个人必须住进喜欢的房间 且 吃到喜欢的菜才算满意。 每道菜至多让1个人吃,每个房间至多让1个人睡。 于是,我们得出了建图的几大原则: 菜与房间 分别 作为一个点。 为了保证条件1,每个人应该拆成2个点,并在这两个点之间连一条容量为1的边。 为了保证条件2,应该让每一个人拆成的第一个点与所有自己喜欢的房间对应的点连一条容量为1的边,让每一个人拆成的第二个点与所有自己喜欢的菜对应的点连一条容量为1的边。 为了保证条件3,应该让源点 \(s\) 向所有的房间连一条容量为1的边,所有的菜向汇点 \(t\) 连一条容量为1的边。 放一张对应的图(样例): 最后EK跑最大流即可。 Code(超级精简,不到60行): #include <bits/stdc++.h> using namespace std; int n,p,q,head[10005],tot=-1,st,ed,flow[10005],pre[10005],maxflow,vis[10005]; const int INF=0x3f3f3f3f;queue<int> qq; struct