首页 > 代码库 > HDU 1203 I NEED A OFFER!【01背包】
HDU 1203 I NEED A OFFER!【01背包】
大意:01背包
分析:01背包
代码:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 const int maxn = 10005; 7 const int INF = 1000000000; 8 9 double dp[maxn];10 int cost[maxn];11 double prob[maxn];12 int main() {13 int n, m;14 while(scanf("%d %d",&n, &m) && ( n + m ) ) {15 for(int i = 1; i <= m; i++) {16 scanf("%d %lf",&cost[i], &prob[i]);17 }18 for(int i = 0; i <= n; i++) dp[i] = 1.0;19 for(int i = 1; i <= m; i++) {20 for(int j = n; j >= cost[i]; j--) {21 dp[j] = min(dp[j], dp[j - cost[i]] * (1.0 - prob[i]));22 }23 }24 double ans = 1.0 - dp[n];25 ans *= 100;26 printf("%.1lf%%\n",ans);27 }28 return 0;29 }
HDU 1203 I NEED A OFFER!【01背包】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。