【第22期】观点:IT 行业加班,到底有没有价值?

【动态规划】——POJ 1018 Communication System

原创 2013年12月04日 13:52:14

转载请注明出处:http://blog.csdn.net/a1dark

分析:这题其实可以用搜索写、以前用搜索做过这道题、不过既然是练DP、那便DP吧、

//dp[i][j]表示选了前i件商品,最小带宽为j时的价值总和
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn=105;
const int maxm=10005;
int b[maxn];
int p[maxn];
int dp[maxn][maxm];
int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        int n,m;
        memset(dp,-1,sizeof(dp));
        scanf("%d",&n);
        int maxb=0;
        for(int i=1;i<=n;i++){
            scanf("%d",&m);
            for(int j=1;j<=m;j++){
                scanf("%d%d",&b[j],&p[j]);
                maxb=max(maxb,b[j]);
            }
            if(i==1){//第一层直接初始化
                for(int j=1;j<=m;j++)
                    dp[i][b[j]]=p[j];
                continue;
            }
            for(int k=0;k<=maxb;k++){
                if(dp[i-1][k]==-1)continue;
                for(int j=1;j<=m;j++){
                    int mb=min(k,b[j]);//当选择第J个厂商时、取当前最小的带宽
                    if(dp[i][mb]==-1)//如果这种带宽没有别的组合达到、则直接由上一层加
                        dp[i][mb]=dp[i-1][k]+p[j];
                    else//如果这种组合已经有值了、则选择小的
                        dp[i][mb]=min(dp[i][mb],dp[i-1][k]+p[j]);
                }
            }
        }
        double ans=0;
        for(int i=0;i<=maxb;i++)//遍历每一种带宽的对应的最小总价格
            ans=max(ans,(1.0*i)/(double)dp[n][i]);
        printf("%.3f\n",ans);
    }
    return 0;
}


版权声明:本文为博主原创文章,转载请注明出处 http://blog.csdn.net/a1dark 举报

相关文章推荐

POJ1018-Communication System

转载请注明出处:優YoU    大致题意: 某公司要建立一套通信系统,该通信系统需要n种设备,而每种设备分别可以有m1、m2、m3、...、mn个厂家提供生产,而每个厂家生产的同种设备都会存在两个方...

poj 1018 Communication System

首先做这个题是极其难受的,第一次去做dp的题,万事开头难,虽然以前也接触过dp,但是都极力躲避着用其他算法解决,现在专门练这部分,倒觉得,你拍什么,什么就会比想象中难很多,没办法,一点一点练吧!  ...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

poj-1018-Communication System

Communication SystemTime Limit: 1000MS Memory Limit: 10000K Total Submissions: 28519 Ac...

POJ - 1018 Communication System (暴力)

题目大意:要买n个零件,每个零件可以由m个厂家提供,每个零件都有相应的b值和p值。(每个零件只能买一个)现在要求你求出最大的min(b) /sum(p) min(b)表示的是每个零件的最小b值 s...

POJ - 1018 Communication System

题目大意:某公司要建立一套通信系统,该通信系统需要n种设备,而每种设备分别可以有m1、m2、m3、…、mn个厂家提供生产,而每个厂家生产的同种设备都会存在两个方面的差别:带宽bandwidths 和 ...

POJ 1018--Communication System

poj 1018

poj1018Communication System dp

//一个系统需要n个设备,每个设备有不同的生产厂家,不同的厂家的设备的性能和价格不同 //现在问要这个系统的B/P的最大值,B是N个设备性能最差的性能,P是n个设备的价格 //dp[i][j] 表示前...
  • cq_pf
  • cq_pf
  • 2015-08-01 16:49
  • 340

poj 1018 Communication System

Communication System Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 23...

poj1018 枚举

http://poj.org/problem?id=1018 Description We have received an order from Pizoor Communication...

poj 1018 Communication System 动态规划

Communication System Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 25393   Acce...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)