• HDU 1203 背包问题


    题目大意:

    根据学校的申请费用,根据已有的钱得到最大的offer率

    这里很明显就是一个价值为概率的背包问题

    计算两个offer合并的概率 为a + b - a*b

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 using namespace std;
     5 const int N = 10005;
     6 
     7 double dp[N];
     8 
     9 int main()
    10 {
    11     int n , m , a;
    12     double b;
    13     while(scanf("%d%d" , &m , &n)){
    14         if(n == 0 && m == 0) break;
    15         memset(dp , 0 , sizeof(dp));
    16         for(int i = 0 ; i<n ; i++){
    17             scanf("%d%lf" , &a , &b);
    18             for(int j = m ; j>=a ; j--){
    19                 double tmp = dp[j-a] + b - dp[j-a]*b;
    20                 dp[j] = max(dp[j] , tmp);
    21             }
    22         }
    23         printf("%.1f%%
    " , dp[m] * 100);
    24     }
    25     return 0;
    26 }
  • 相关阅读:
    SQL INNER JOIN
    SQL JOIN
    SQL OUTER JOIN
    SQL CROSS JOIN
    SQL 基础:Select语句,各种join,union用法
    Morton Code
    vs 字体
    sql 语言
    sqllite3
    linux怎么区别文本文件和二进制文件
  • 原文地址:https://www.cnblogs.com/CSU3901130321/p/4183782.html
Copyright © 2020-2023  润新知