hdu2955 dp
2015-08-07 15:53
253 查看
[code]#include <cstdio> #include <iostream> #include <algorithm> #include <queue> #include <cmath> #include <cstring> #include <stack> #include <set> #include <map> #include <vector> using namespace std; #define INF 0x2fffffff #define LL long long #define MAX(a,b) ((a)>(b))?(a):(b) #define MIN(a,b) ((a)<(b))?(a):(b) int l[1000]; double w[1000]; double dp[10005][105]; int main(){ int t; cin >> t; double a; int n; while(t--){ scanf("%lf %d",&a,&n); int sum = 0; for(int i = 1;i <= n;i++){ scanf("%d%lf",&l[i],&w[i]); w[i] = 1 -w[i]; sum += l[i]; } for(int i = 0;i <= sum;i++){ for(int j = 0;j <= n;j++){ dp[i][j] = 0; } } dp[0][0] = 1; for(int i = 0;i <= sum;i++){ for(int j = 1;j <= n;j++){ if(l[j] > i){ dp[i][j] = dp[i][j-1]; } else{ dp[i][j] = max(dp[i][j-1],dp[i-l[j]][j-1]*w[j]); } } } int ans = 0; a = 1 - a; for(int i = 0;i <= sum;i++){ if(dp[i] >= a ){ ans = i; } } printf("%d\n",ans); } return 0; }
同样是01背包问题,但是这道题变换了一个,这里面的价值现在变成了实数,所以这时候要改变dp的策略
相关文章推荐
- IOS-3-Objective-C语言:单例设计模式
- Python3 列表List或元组tuple中元素分解(赋值操作)
- JSP中利用JFreechart生成图表
- ecshop 用户中心里的订单详情页显示商品缩略图
- 从“贪便宜的小市民”到“有钱的懒人”,O2O是如何彻底改变我们
- 【翻译】在Ext JS 6通用应用程序中使用既共享又特定于视图的代码
- 需要这样一个记事本-13 SVN检出的文件夹及文件状态图标不显示解决办法
- 用户密码存储方式
- iOS 读书笔记-单元测试XCTest
- 自创 win7清除桌面快捷键小箭头 批处理
- Android中inflate简介
- 【翻译】在Ext JS 6通用应用程序中使用既共享又特定于视图的代码
- 数据结构基础(22)--红黑树的设计与实现(上)
- 【翻译】在Ext JS 6通用应用程序中使用既共享又特定于视图的代码
- Seek the Name, Seek the Fame(Kmp)
- cuda+ffmpeg+opengl解码rtsp h264码流多路
- 数组名是指针常量
- [优先队列+贪心]poj3614 Sunscreen
- ueditor在QQ浏览器或者IE浏览器中无法加载
- WPF中WebBrowser的使用方法及分析