动态规划之带宽与价格
来源:互联网 发布:淘宝信用卡额度多少 编辑:程序博客网 时间:2024/04/20 03:14
#include<iostream>#include<iomanip>#include<cstdio>using namespace std;#define inf 0x3f3f3f3fint dp[10000][10000];int min(int a,int b){if(a>=b) return b;else return a;}int main(){int t,n;cin>>t;while(t--){cin>>n;int i,j;for(i=1;i<=n;i++) //初始化 ,都赋给最大值 {for(j=1;j<=10000;j++){dp[i][j]=inf;}}for(i=1;i<=n;i++){int m,band,price,k;cin>>m;while(m--){cin>>band>>price;if(i==1) /* 当遍历第一组是,将p赋给dp[1][band]; dp[1][band]为带宽为band的所用的价钱 */ {dp[1][band]=min(dp[1][band],price); }else /*当遍历第二组是*/ {for(k=1;k<=10000;k++){ if(dp[i-1][k]!=inf) //找出前一组遍历过的dp[i-1][k]; { if(k<=band) //如果前一组的band值k 小于这组的band值 band { dp[i][k]=min(dp[i][k],dp[i-1][k]+price); //就找出dp[i][k]和(前一组的dp[i-1][k]加上这组价格price)的最小值 ,并赋给 dp[i][k] } else //这组的band值 band 小于如果前一组的band值k, 就找出dp[i][band]和(前一组的dp[i-1][k]加上这组价格price)的最小值 ,并赋给 dp[i][band] { dp[i][band]=min(dp[i][band],dp[i-1][k]+price); } } }}}} double ans; double sum=0;for(i=1;i<=10000;i++){if(dp[n][i]!=inf){ans=(double)i/dp[n][i];if(ans>sum){ sum=ans;}}}printf("%.3f\n",sum);}}
0 0
- 动态规划之带宽与价格
- 数据结构与算法之动态规划
- 穷举/动态规划 求解商品最优价格问题
- 数学之美系列二十四 -- 谈谈动态规划与如何设计动态规划算法
- 博弈论专题——推理与动态规划相关博弈之POJ2068 POJ3688动态规划)
- 动态规划之树形动态规划
- 动态规划与排列组合
- 动态规划与排列组合
- 动态规划与排列组合
- 动态规划与排列组合
- 动态规划与排列组合
- 动态规划与线性规划
- 博弈与动态规划
- 分治与动态规划
- 递归与动态规划
- 递归与动态规划
- 电路设计之闭环带宽与准确度
- 动态规划之LCS
- Delphi IDHTTP控件:GET/POST 请求
- 69. Sqrt(x)
- quartz1.8+spring2.3.9实现从数据库中读取定时任务
- 第四周报告
- 153. Find Minimum in Rotated Sorted Array
- 动态规划之带宽与价格
- 导数与微分第一次瞎胡闹整理
- 编写linux入门驱动程序的 Makefile文件格式
- 一起来玩AZURE SQL(三)AZURE SQL 数据库迁移
- 让WindowsXP SP3支持64G内存
- 全排递归实现
- 升级kali系统 进入后发现一直蓝屏
- Objective-C Runtime(5)
- C/C++指针