题目名称 1548. [CTSC 2001]终极情报网
输入输出 agent.in/out
难度等级 ★★★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 14
题目来源 Gravatarcstdio 于2014-03-18加入
开放分组 全部用户
提交状态
分类标签
最短路 网络流 高精度
分享题解
通过:27, 提交:139, 通过率:19.42%
GravatarFoolMike 100 0.027 s 6.51 MiB C++
GravatarONCE AGAIN 100 0.028 s 2.15 MiB C++
GravatarTenderRun 100 0.029 s 6.05 MiB C++
Gravatarcstdio 100 0.031 s 0.33 MiB C++
Gravatar半汪 100 0.032 s 4.90 MiB C++
GravatarMario_sz 100 0.033 s 3.87 MiB C++
Gravatar_Itachi 100 0.033 s 10.94 MiB C++
Gravatar‎MistyEye 100 0.034 s 0.33 MiB C++
GravatarKZNS 100 0.036 s 0.31 MiB C++
Gravatar张灵犀不和我一般见识真可怕呢(笑 100 0.036 s 1.17 MiB C++
关于 终极情报网 的近10条评论(全部评论)
Mike已经将数据修正,记得无解要输出0.0000
懒人出懒招,我的输出还是挺短的吧- -
GravatarFoolMike
2017-01-31 22:46 10楼
好好的一个代码非打表打得这么丑!!!
Gravatar半汪
2017-01-19 10:42 9楼
GravatarONCE AGAIN
2017-01-12 19:03 8楼
233,这里建边时,反向弧的费用建成1.0/cost就行了,感觉自己好机智呢!
又是喜闻乐见的精度问题,不过有一个点答案为0.000000000003314,说好的保留5位有效数字呢!!
Gravatar_Itachi
2017-01-10 08:20 7楼
卡精度差评……
不开O2优化,精度就不够,为啥?
GravatarTenderRun
2016-07-03 20:50 6楼
膜梦迪中。。。
Gravatarmikumikumi
2015-10-09 09:23 5楼
回复 @cstdio :
大美队!!!
GravatarC语言入门
2014-03-19 09:54 4楼
反悔边的费用是1/正边费用……
不用纠结“两个人是相互传m还是一共传m”这种问题,因为显然不会a给b一些情报然后b又给a一些情报……
顺便吐槽一下官僚主义的盟军情报部233,还给不给间谍自主行动余地了……
Gravatarcstdio
2014-03-18 22:38 3楼
回复 @Gold Miner :
没错,美国队长1……
在网上搜这方面的图,有意义的基本都是妹子单人照片……然后就显得太没气势了……所以就这样了……
Gravatarcstdio
2014-03-18 22:23 2楼
@cstdio:
如果我没看错的话,这个图是。。。。。。
orz。。。
GravatarGDFRWMY
2014-03-18 22:22 1楼

1548. [CTSC 2001]终极情报网

★★★☆   输入文件:agent.in   输出文件:agent.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

在最后的诺曼底登陆战开始之前,盟军与德军的情报部门围绕着最终的登陆地点展开了一场规模空前的情报战。
这场情报战中,盟军的战术是利用那些潜伏在敌军内部的双重间谍,将假的登陆消息发布给敌军的情报机关的负责人。那些已经潜入敌后的间谍们都是盟军情报部的精英,忠实可靠;但是如何选择合适的人选,以及最佳的消息传递方法,才能保证假消息能够尽快而且安全准确地传递到德军指挥官们的耳朵里,成了困扰盟军情报部长的最大问题。他需要你的帮助。

以下是情报部长提供的作战资料:

在敌后一共潜伏着我方最优秀的N(N<=300)名间谍,分别用数字1, 2, …, N编号。在给定的作战时间内,任意两人之间至多只进行一次点对点的双人联系。
我将给你一份表格,表格中将提供任意两位间谍i和j之间进行联系的安全程度,用一个 [0, 1] 的实数Si j表示;以及他们这次联系时,能够互相传递的消息的最大数目,用一个正整数表示Mi j (如果在表格中没有被提及,那么间谍i和j之间不进行直接联系)。
假消息从盟军总部传递到每个间谍手里的渠道也不是绝对安全,我们用 [0, 1] 的实数ASj表示总部与间谍j之间进行联系的安全程度,AMj则表示总部和间谍j之间进行联系时传递的消息的最大数目。对于不和总部直接联系的间谍,他的AMj=0(而表格中给出的他的ASj是没有意义的)。
当然,假消息从间谍手中交到敌军的情报部官员的办公桌上的过程是绝对安全的,也即是说,间谍与敌军情报部门之间要么不进行直接联系,要么其联系的安全程度是1(即完全可靠)。

现在情报部打算把K条假消息“透露”到德军那里。消息先由总部一次性发给N名间谍中的一些人,再通过他们之间的情报网传播,最终由这N名间谍中的某些将情报送到德军手中。
对于一条消息,只有安全的通过了所有的中转过程到达敌军情报部,这个传递消息的过程才算是安全的;因此根据乘法原理,它的安全程度P就是从总部出发,经多次传递直到到达德军那里,每一次传递该消息的安全程度的乘积。
而对于整个计划而言,只有当N条消息都安全的通过情报网到达德军手中,没有一条引起怀疑时,才算是成功的。所以计划的可靠程度是所有消息的安全程度的乘积。
显然,计划的可靠性取决于这些消息在情报网中的传递方法。
我需要一个方案,确定消息应该从哪些人手中传递到哪些人手中,使得最终计划的可靠性最大。

你可以利用计算机,来求得这个最可靠的消息传递方案。

【输入格式】

第一行包括两个整数N(N<=300)和K,分别是间谍的总人数和计划包含的消息总数。
第二行包括2N个数,前N个数是实数AS1, AS2, …, ASN(范围在[0, 1]以内);后N个数是整数AM1, AM1, …, AMN。
第三行包含了N个整数,其中第i(i = 1, 2, …, N)个整数如果为0表示间谍i与德军情报部不进行联系,如果为1则表示间谍与德军情报部进行联系。
第四行开始,每行包括4个数,依次分别是:代表间谍编号的正整数i和j,间谍i和j联系的安全性参数Si j([0,1]范围内的实数),以及i、j之间传递的最大消息数 Mi j(每一行的i均小于j )。
最后的一行包含两个整数-1 -1,表示输入数据的结束。
0

【输出格式】

 

只有一行。这一行中包含一个实数P,给出的是整个计划的可靠程度P,保留5位有效数字(四舍五入)。
如果情报网根本不能将K条消息传到德军手中,那么计划的可靠性为0。
(你可以假定,如果计划存在,那么它的可靠性大于1e-12)

【样例输入】

6 13
  0.9 0.7 0.8 0 0 0 2 6 8 0 0 0
  0 0 0  1  0  1
  1 4 0.5 2
  2 3 0.9 5
  2 5 0.8 2
  2 6 0.8 7
  3 5 0.8 2
  5 6 0.8 4
  -1 -1

【样例输出】

0.00021184

【题目来源】

耒阳大世界(衡阳八中) OJ 2542

2016.1.31声明:数据已修复,如果无解,记得输出0.0000——Mike