poj 1018 Communication System
首先做这个题是极其难受的,第一次去做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相关推荐
- POJ 1018 Communication System
WA 的分析 1. solve_dp 返回的是 double 不是 int 浪费了非常久的时间 2. 做动规, 当状态转移方程比较复杂时, 举例子能够帮助初始化和写出状态转移方程 总结 1. 这里 d ...
- 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 ...
- poj1018 Communication System (有道翻译完全拯救不了)
译文: 问题描述 我们刚刚收到了来自PCI的一份订单 该系统由几个设备组成.对于每一个设备,我们可以自由选择由哪些制造商制造.相同的设备,不同的制造商都有不同的带宽和价格. B表示能达到的最小带宽之和 ...
- MATLAB Communication System(4)通信系统的信源与信道一
1.信源产生函数 1.1产生误比特图样:randerr 对于所有的语法,randerr对out的每一行都进行独立处理. out = randerr(m) 生成一个m乘m的二进制矩阵,其中每一行在随机位 ...
- poj 1018 dp
一.题目大意 一个系统由n个设备组成,每个设备可以由mi个厂商提供,每个设备你可以选一个厂商,在你选定的厂商的设备中,b(带宽)是所选设备中b值最小的,类似于短板效应,p是所有价格之和,要求b/p最小 ...
- oracle用dual创建临时表,Oracle 学习系列之二(会话与事务级临时表和dual表 )
一. 会话临时表 --创建会话临时表 create global temporary table tmp_user_session(user_id int, user_name varchar2(20 ...
- POJ前面的题目算法思路【转】
1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...
- POJ 超详细分类
POJ 各题算法 1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 ...
- POJ的题目分类(两个版本)
版本一: 简单题 1000A+B Problem 1001Exponentiation 1003 Hangover 1004 Financial Management 1005 I Think I N ...
最新文章
- Uber自动驾驶汽车被赶出了亚利桑那,近300人被裁
- python拼写检查_拼写检查 -
Python文本处理教程™
- 并发容器CopyOnWriteArrayList
- 《正则表达式经典实例(第2版)》——2.19 在替代文本中添加字面文本
- 重温强化学习之OpenAI经典场景
- cacls 使用方法
- 在CesiumVR基础上实现3D左右立体视觉
- 一行Java代码获取当前操作系统并进行不同操作
- 【架构】分布式追踪系统设计与实现
- AFIO时钟何时开启
- The type Resource is not accessible due to restriction on required library
- 【项目管理】敏捷和Scrum
- jQuery (二)
- adams如何保存_教你如何快速把模型 从solidworks转到adams里
- Spark Streaming之容错机制以及事务语义
- Hadoop3——集群搭建以及初体验
- xshell 无法定位输入点_机器人抓取汇总|涉及目标检测、分割、姿态识别、抓取点检测、路径规划...
- cygwin 'unable to remap' issue
- sht20中写用户寄存器_SHT20 IIC 寄存器概述
- linux渲染农场大连教程,Deadline渲染农场搭建
热门文章
- 《从零构建前后分离的web项目》准备 - 前端了解过关了吗?
- 课时28.假链接(掌握)
- Appium环境搭建-完整版
- 51Nod.1766.树上最远点对(树的直径 RMQ 线段树/ST表)
- Shell 简单的java微服务jar包 -- 部署脚本
- MYSQL AND OR的联用
- quagga源码分析--路由信息处理zebra-rib
- 由MySql漏洞导致电脑被入侵(特征为新增加名为piress的帐户)
- YTU 2903: A--A Repeating Characters
- 卸载全部appx应用(包括应用商店)