【脑洞大开】一种神奇的[网络流?]——PoPoQQQ流

广告:

#include <stdio.h>
int main()
{
    puts("转载请注明出处[vmurder]谢谢");
    puts("网址:blog.csdn.net/vmurder/article/details/44081723");
}

来源:

PoPoQQQ大爷脑洞一开,就想出一种流进来是a,流出去是ak的边,他称之为“带变压器的边”,然后我们称之为PoPoQQQ流。

来一个应用模型

题目:

题目描述:

PoPoQQQ大爷有s个脑细胞,然后他可以通过让脑细胞
去做一些鬼畜问题来使得脑细胞得到成倍数的增长。但
是有一些问题需要前置问题,即思考过某问题的脑细胞
才可以做这个问题,同时,一个问题的难度有限,所以
有派去思考问题的脑细胞数量上限。问最后PoPoQQQ最
多能获得多少个脑细胞?

输入:

第一行两个数n,m,s表示有n个问题节点,m条问题前置
,初始有s个脑细胞。PoPoQQQ的脑细胞最初在1号节点,
其它节点都是问题节点。

接下来m行每行表示一个节点的问题可以由某节点的脑细
胞来思考,给出u,v,len,mul表示u的脑细胞可以去
思考v的问题,然后这个问题至多由len个脑细胞来思考,
思考后每个脑细胞会变成新节点的mul个脑细胞。

输出:

一行,一个整数x,表示PoPoQQQ最多获得的脑细胞个数。

样例输入:

4 4 3
1 2 3 8
2 3 1000 10
1 4 1 15
4 2 1 7

样例输出:

240

数据约定:

图一定是一个拓扑图,然后点数待定。

关于题的一些想法:

首先我们机房的小伙伴都不会做这道题,或者说本来有看起来很有正确性的做法,但是后来我们找出了一坨反例,或者说最大流无法解决,但是我们仍要说一下这种做法——PoPoQQQ流。

PoPoQQQ流:

思路很简单,就是流量从一条边 i 流过去以后,然后原来的流量变成原来的 ki 倍,退流的时候反向弧的倍数设置成 1ki 就好了。
上题中汇点神马的不重要啦,所有点向汇点连一条增幅为1倍的无限流量边就好啦~~

目前存在的一些问题:

1 . 小数

或许可以拿分数类乱搞,或者long double?总之shenmegui

2 . 用什么算法来解决这坨网络流?

dinic?那么怎么保证“增广?”
然后dinic一个点往外流的时候,可以向若干个出点中任意一个增广,是因为然后流出去了1流量答案就+1,而PoPoQQQ流并不如此。同样的一个流量,这走就是5,那走就是10000,然后直接流到汇点就是0。

3 . ……

PoPoQQQ Orz

唉,目前只能留坑了。
在这里先Orz一下PoPoQQQ大爷。

你可能感兴趣的:(网络流,脑洞大开,PoPoQQQ,PoPoQQQ流)