多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > POJ 1018(dp Or 枚舉)

POJ 1018(dp Or 枚舉)

來源:程序員人生   發布時間:2015-01-14 08:55:52 閱讀次數:3449次

Communication System
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 23738   Accepted: 8437

Description

We have received an order from Pizoor Communications Inc. for a special communication system. The system consists of several devices. For each device, we are free to choose from several manufacturers. Same devices from two manufacturers differ in their maximum bandwidths and prices. 
By overall bandwidth (B) we mean the minimum of the bandwidths of the chosen devices in the communication system and the total price (P) is the sum of the prices of all chosen devices. Our goal is to choose a manufacturer for each device to maximize B/P. 

Input

The first line of the input file contains a single integer t (1 ≤ t ≤ 10), the number of test cases, followed by the input data for each test case. Each test case starts with a line containing a single integer n (1 ≤ n ≤ 100), the number of devices in the communication system, followed by n lines in the following format: the i-th line (1 ≤ i ≤ n) starts with mi (1 ≤ mi ≤ 100), the number of manufacturers for the i-th device, followed by mi pairs of positive integers in the same line, each indicating the bandwidth and the price of the device respectively, corresponding to a manufacturer.

Output

Your program should produce a single line for each test case containing a single number which is the maximum possible B/P for the test case. Round the numbers in the output to 3 digits after decimal point. 

Sample Input

1 3 3 100 25 150 35 80 25 2 120 80 155 40 2 100 100 120 110

Sample Output

0.649

Source

Tehran 2002, First Iran Nationwide Internet Programming Contest

[Submit]   [Go Back]   [Status]   [Discuss]

dp做法,dp[i][j]表示前i個物品最小帶寬為j所需的最小費用。

/************************************************************************* > File Name: xiaozhao.cpp > Author: acvcla > QQ:acvcla@gmail.com > Mail: acvcla@gmail.com > Created Time: 2014年12月27日 星期1 22時34分13秒 *************************************************************************/ #include<cstdio> #include<iostream> #include<string> #include<cstring> #include<cmath> #include<algorithm> #include<queue> #include<cstdlib> #include<vector> #include<set> #include<map> #include<stack> using namespace std; typedef long long ll; typedef pair<int,int>pii; const int maxn=1e2+10; const int maxv=1e3+10; int dp[maxn][maxv],b[maxn],p[maxn]; int main() { int T,n,m; scanf("%d",&T); while(T--) { scanf("%d",&n); memset(dp,0,sizeof dp); int maxb=0; for(int i=0;i<n;++i) { scanf("%d",&m); for(int j=0;j<m;++j){ scanf("%d%d",&b[j],&p[j]); maxb=max(maxb,b[j]); } if(i==0) { for(int j=0;j<m;++j) { if(!dp[0][b[j]])dp[0][b[j]]=p[j]; else dp[0][b[j]]=min(dp[0][b[j]],p[j]); } continue; } for(int j=1;j<=maxb;j++) if(dp[i⑴][j]) { for(int k=0;k<m;k++) { int minb=min(b[k],j); if(!dp[i][minb])dp[i][minb]=dp[i⑴][j]+p[k]; else dp[i][minb]=min(dp[i][minb],dp[i⑴][j]+p[k]); } } } double ans=0; for(int i=1;i<=maxb;i++) { if(!dp[n⑴][i])continue; ans=max(ans,1.0*i/dp[n⑴][i]); } printf("%.3f ", ans); } return 0; }

枚舉竟然比dp更快。。。,枚舉最小帶寬。


/************************************************************************* > File Name: xiaozhao.cpp > Author: acvcla > QQ:acvcla@gmail.com > Mail: acvcla@gmail.com > Created Time: 2014年12月27日 星期1 22時34分13秒 *************************************************************************/ #include<cstdio> #include<iostream> #include<string> #include<cstring> #include<cmath> #include<algorithm> #include<queue> #include<cstdlib> #include<vector> #include<set> #include<map> #include<stack> using namespace std; typedef long long ll; typedef pair<int,int>pii; const int maxn=1e4+10; const int inf=0x3f3f3f3f; vector<pii>communication[maxn]; vector<int> v; double work(int x,int n) { int b=inf; double p=0; for(int i=0;i<n;i++) { int ch=⑴; for(int j=0;j<communication[i].size();++j) if(communication[i][j].first>=x) { if(ch==⑴||communication[i][j].second<communication[i][ch].second|| (communication[i][j].second==communication[i][ch].second&&communication[i][j].first>communication[i][ch].first)){ ch=j; } } if(ch==⑴)return ⑴.0; b=min(b,communication[i][ch].first); p+=communication[i][ch].second; } return b/p; } double solve(int n) { sort(v.begin(), v.end()); unique(v.begin(), v.end()); int L=0,R=v.size(); double ans=⑶.0,p=0; for(int i=0;i<v.size();++i) { p=work(v[i],n); if(p<=0)return ans; ans=max(p,ans); } return ans; } int main() { int T,n,m; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=0;i<n;i++)communication[i].clear(); v.clear(); for(int i=0;i<n;i++) { scanf("%d",&m); int b,p; while(m--) { scanf("%d%d",&b,&p); v.push_back(b); communication[i].push_back(make_pair(b,p)); } } printf("%.3f ", solve(n)); } return 0; }



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 99热国产免费 | 夜趣第一宅男福社区国产 | 中出丰满大乳中文字幕 | 国产免费福利网站 | 日本不卡一二三 | 二区国产| 国产精品久久久久久久 | 波多野氏免费一区 | 久久久久久一级毛片免费野外 | 精品视频一区二区三区 | 在线 成人 | 特级aa毛片在线播放 | 经典三级第一页 | 亚洲欧美成人在线 | 岛国福利视频 | 一区二区三区中文国产亚洲 | 国产亚洲精品福利片 | 久草一级片| 99精品一区二区三区 | 国产午夜人做人免费视频中文 | 久久精品一区二区三区中文字幕 | 亚洲中字| 欧美在线不卡视频 | 毛片的网站 | 最近最新中文字幕在线第一页 | 亚洲成人h | 国产精品亚洲片在线不卡 | 精品亚洲福利一区二区 | 亚洲国产高清一区二区三区 | 欧洲美女性做爰 | 国产区亚洲区 | 亚洲成a人片在线观看www流畅 | 五月婷婷在线视频观看 | 琪琪午夜伦埋大全影院 | 免费在线观看成年人视频 | 日韩欧美中文字幕一区 | 久久精品成人免费网站 | 美国人和狍xxxx视频 | 欧美色图另类小说 | 日本免费中文字幕在线看 | 五月天看片 |