Codeforces Gym 100340C ePig 模拟

题目大意:

题目很长.....不过实现并不难....当年华科校赛遇到这个题没做...现在补一下

就是现在P2P协议进行文件传输

现在又n个客户端, 一个包被分成k个部分进行发送, 发送到所有客户端需要的时间

发送规则:

首先初始状态只有Client 1拥有完整文件(所有的包)进行提供

每一轮 开始时所有Client机器决定需要的包, 每个Client需要的包是其没有的所有包中供源最少的包, 如果有多个选择序号最小的包

然后每个Client决定要从哪里获得包, 获得包的原则是在所有能提供这个包的Client中选择, 并且选择从拥有包的数量最少的Client那里获得, 如果依旧有多个选择就选择序号最小的Client

然后每个Client都会有得到的请求, 这个时候所有Client决定要给谁包, 每个Client只能满足一个请求, 每个Client会选择曾经给它包的数量最多的Client, 如果有多个, 那么选择拥有包数量最少的Client, 如果依旧有多个, 选择序号最小的

于是每轮都这样重复, 到某一轮之后所有Client有所有包, 传输结束

输出除了Client 1之外, 其他Client得到完整的全部包的轮数


大致思路:

上面的过程看懂了很容易过的....

模拟题还是要耐心...


代码如下:

Result  :  Accepted     Memory  :  460 KB     Time  :  560 ms

/*
 * Author: Gatevin
 * Created Time:  2015/9/1 16:41:44
 * File Name: C.cpp
 */
#include<iostream>
#include<sstream>
#incl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值