博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[POJ3836 P2P File Sharing System]
阅读量:5287 次
发布时间:2019-06-14

本文共 2035 字,大约阅读时间需要 6 分钟。

[关键字]:模拟

[题目大意]:模拟一个P2P 下载,每对机器都有一个传输速率,每一个机器都有在线和离线时间,和下载的开始时间,当一个机器开始下载时,它将从所有在线且提供下载且与他有速度的服务器上下载。当它下载完成时,下一秒它就变成了服务器。问T时间之后,各个机器的完成百分比是多少。

//=====================================================================================

[分析]:枚举每一秒直接模拟这一秒有那些电脑可以下载并枚举那些服务器可以下载,然后更新下载量。如果以下载完就把他标记成服务器。

[代码]:

View Code
#include
#include
#include
#include
#include
using namespace std; int n,m,K,S,T; int serve[21],speed[21][21]; int online[21][11][2],start[21]; int sum[21],temp[21]; void Init() {
int x,y; scanf("%d%d",&n,&T); scanf("%d%d",&K,&S); for (int i=1;i<=K;++i) scanf("%d",&serve[i]),sum[serve[i]]=S; for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) scanf("%d",&speed[i][j]); for (int i=1;i<=n;++i) {
scanf("%d",&online[i][0][0]); for (int j=1;j<=online[i][0][0];++j) scanf("%d%d",&online[i][j][0],&online[i][j][1]); } scanf("%d",&m); for (int i=1;i<=m;++i) {
scanf("%d%d",&x,&y); if (start[y]==-1 || start[y]>x) start[y]=x; } //printf("%d %d %d %d\n",n,T,K,S); } bool Judge(int x,int y) {
for (int i=1;i<=online[x][0][0];++i) if (online[x][i][0]<=y && y
y || start[x]==-1) return 0; if (Judge(x,y)) return 1; else return 0; } void Solve() { int tmp; for (int i=0;i
=S) temp[++tmp]=j; //printf("%d %d %d\n",i,j,sum[j]); } for (int j=1;j<=tmp;++j) serve[++K]=temp[j]; } //for (int i=1;i<=n;++i) printf("%d\n",sum[i]); for (int i=1;i<=n;++i) if (sum[i]>=S) printf("100%%\n"); else printf("%d%%\n",(sum[i]*100)/S); } void Prepare() { memset(serve,0,sizeof(serve)); memset(online,0,sizeof(online)); memset(sum,0,sizeof(sum)); memset(speed,0,sizeof(speed)); memset(start,255,sizeof(start)); } int main() { freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); int test; scanf("%d",&test); while (test--) { Prepare(); Init(); Solve(); } return 0; }

转载于:https://www.cnblogs.com/procedure2012/archive/2012/03/15/2398670.html

你可能感兴趣的文章
shell脚本统计文件中单词的个数
查看>>
SPCE061A学习笔记
查看>>
sql 函数
查看>>
hdu 2807 The Shortest Path 矩阵
查看>>
熟悉项目需求,要知道产品增删修改了哪些内容,才会更快更准确的在该项目入手。...
查看>>
JavaScript 变量
查看>>
java实用类
查看>>
smarty模板自定义变量
查看>>
研究称90%的癌症由非健康生活习惯导致
查看>>
命令行启动Win7系统操作部分功能
查看>>
排序sort (一)
查看>>
Teamcenter10 step-by-step installation in Linux env-Oracle Server Patch
查看>>
Struts2学习(三)
查看>>
Callable和Runnable和FutureTask
查看>>
GitHub 多人协作开发 三种方式:
查看>>
文本域添加编辑器
查看>>
Yum安装MySQL以及相关目录路径和修改目录
查看>>
java获取hostIp和hostName
查看>>
关于web服务器和数据库的各种说法(搜集到的)
查看>>
C# Stream 和 byte[] 之间的转换
查看>>