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

题意是说有n个设备,对于每个设备,有m个制造商,每个制造商对应不同的带宽(B)和价格(P)求出选出的n个设备,使得总的B/p 最大。题意弄了半天才搞懂,开始就写错了,后来也是看了别人的代码,才发觉是01背包问题,狗血的是c++ 47Ms秒过,g++wa!

code:

#include<iostream>
#include<cstdio>
#include<cstring>
#include <algorithm>
using namespace std;
int dp[101][1010];
int b[101],p[1010];
int main (){
int t,n,m;
scanf("%d",&t);
while(t--)
{
int maxb;
memset(dp,-1,sizeof(dp));
scanf("%d",&n);
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[1][b[j]] = p[j];
continue;
}
for(int j = 0;j <= maxb;++j)
{
if(dp[i-1][j] != -1)
{
for(int k = 1;k <= m;++k)
{
int tb = min(j,b[k]);
if(dp[i][tb] == -1)
dp[i][tb] = dp[i-1][j] + p[k];
else
dp[i][tb] = min(dp[i][tb],dp[i-1][j]+ p[k]);
}
}
}
}
double ans = 0;
for(int j = 1;j <= maxb;++j)
{
if(dp[n][j] != -1)
ans = max(ans,((double)j/dp[n][j]));
}
printf("%.3lf\n",ans);
}
return 0;
}

poj 1018 Communication System相关推荐

  1. POJ 1018 Communication System

    WA 的分析 1. solve_dp 返回的是 double 不是 int 浪费了非常久的时间 2. 做动规, 当状态转移方程比较复杂时, 举例子能够帮助初始化和写出状态转移方程 总结 1. 这里 d ...

  2. TargetVue: Visual Analysis of Anomalous User Behaviors in Online Communication System

    论文传送门 视频 作者 IBM T.J. Watson 研究中心 Nan Cao Conglei Shi Sabrina Lin Jie Lu Ching-Yung Lin 匹兹堡大学 Yu-Ru L ...

  3. poj1018 Communication System (有道翻译完全拯救不了)

    译文: 问题描述 我们刚刚收到了来自PCI的一份订单 该系统由几个设备组成.对于每一个设备,我们可以自由选择由哪些制造商制造.相同的设备,不同的制造商都有不同的带宽和价格. B表示能达到的最小带宽之和 ...

  4. MATLAB Communication System(4)通信系统的信源与信道一

    1.信源产生函数 1.1产生误比特图样:randerr 对于所有的语法,randerr对out的每一行都进行独立处理. out = randerr(m) 生成一个m乘m的二进制矩阵,其中每一行在随机位 ...

  5. poj 1018 dp

    一.题目大意 一个系统由n个设备组成,每个设备可以由mi个厂商提供,每个设备你可以选一个厂商,在你选定的厂商的设备中,b(带宽)是所选设备中b值最小的,类似于短板效应,p是所有价格之和,要求b/p最小 ...

  6. oracle用dual创建临时表,Oracle 学习系列之二(会话与事务级临时表和dual表 )

    一. 会话临时表 --创建会话临时表 create global temporary table tmp_user_session(user_id int, user_name varchar2(20 ...

  7. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  8. POJ 超详细分类

    POJ 各题算法 1000    A+B Problem            送分题     49%    2005-5-7 1001    Exponentiation         高精度   ...

  9. POJ的题目分类(两个版本)

    版本一: 简单题 1000A+B Problem 1001Exponentiation 1003 Hangover 1004 Financial Management 1005 I Think I N ...

最新文章

  1. Uber自动驾驶汽车被赶出了亚利桑那,近300人被裁
  2. python拼写检查_拼写检查 - Python文本处理教程™
  3. 并发容器CopyOnWriteArrayList
  4. 《正则表达式经典实例(第2版)》——2.19 在替代文本中添加字面文本
  5. 重温强化学习之OpenAI经典场景
  6. cacls 使用方法
  7. 在CesiumVR基础上实现3D左右立体视觉
  8. 一行Java代码获取当前操作系统并进行不同操作
  9. 【架构】分布式追踪系统设计与实现
  10. AFIO时钟何时开启
  11. The type Resource is not accessible due to restriction on required library
  12. 【项目管理】敏捷和Scrum
  13. jQuery (二)
  14. adams如何保存_教你如何快速把模型 从solidworks转到adams里
  15. Spark Streaming之容错机制以及事务语义
  16. Hadoop3——集群搭建以及初体验
  17. xshell 无法定位输入点_机器人抓取汇总|涉及目标检测、分割、姿态识别、抓取点检测、路径规划...
  18. cygwin 'unable to remap' issue
  19. sht20中写用户寄存器_SHT20 IIC 寄存器概述
  20. linux渲染农场大连教程,Deadline渲染农场搭建

热门文章

  1. 《从零构建前后分离的web项目》准备 - 前端了解过关了吗?
  2. 课时28.假链接(掌握)
  3. Appium环境搭建-完整版
  4. 51Nod.1766.树上最远点对(树的直径 RMQ 线段树/ST表)
  5. Shell 简单的java微服务jar包 -- 部署脚本
  6. MYSQL AND OR的联用
  7. quagga源码分析--路由信息处理zebra-rib
  8. 由MySql漏洞导致电脑被入侵(特征为新增加名为piress的帐户)
  9. YTU 2903: A--A Repeating Characters
  10. 卸载全部appx应用(包括应用商店)