zoukankan      html  css  js  c++  java
  • hdu1864 最大报销额(01背包)

    https://vjudge.net/problem/HDU-1864

    想到了通过*100来化解浮点数,但是题目没读仔细,即一张发票上可能有一个物品的多个记录。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cstdlib>
     6 #include<cmath> 
     7 #define lson l, m, rt<<1
     8 #define rson m+1, r, rt<<1|1
     9 #define IO ios::sync_with_stdio(false);cin.tie(0);
    10 #define INF 1e9
    11 typedef long long ll;
    12 using namespace std;
    13 int n, m, a[1010], dp[5000010];
    14 double q, price, v[3];
    15 int main()
    16 {
    17     IO;
    18     while(~scanf("%lf%d", &q, &n)){
    19         int q1 = q*100;
    20         if(n == 0) break;
    21         memset(dp, 0, sizeof(dp));
    22         memset(a, 0, sizeof(a));
    23         int t = 0;
    24         char type;
    25         for(int j = 0; j < n; j++){
    26             scanf("%d", &m);
    27             for(int i = 0; i < 3; i++) v[i] = 0;
    28             int flag=0;
    29             for(int i = 0; i < m; i++){
    30                 scanf(" %c:%lf", &type, &price);//一张发票上可能有一个物品的多个记录 
    31                 if(type=='A'||type=='B'||type=='C'){
    32                     int s = type-'A';
    33                     v[s] += price;
    34                 }
    35                 else flag=1;
    36             }
    37             if(flag) a[t]=0;//有'X' 
    38             else if(v[0]+v[1]+v[2]>1000) a[t] = 0;//和超 
    39             else if(v[0]>600||v[0]>600||v[0]>600) a[t]=0;//单超 
    40             else {
    41                 a[t] = (v[0]+v[1]+v[2])*100;
    42                 t++;
    43             } 
    44         }
    45         //sort(a, a+n);
    46         for(int i = 0; i < t; i++){
    47             for(int j = q1; j >= a[i]; j--){
    48                 dp[j] = max(dp[j], dp[j-a[i]]+a[i]);
    49             }
    50         }
    51         printf("%.2lf
    ", dp[q1]*1.0/100);
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    c# WInform 自定义导航布局
    c# 关于DataTable
    Sql Server 表结构相关
    C# winform 文件管理
    c# SqlBulkCopy实现批量从数据集中把数据导入到数据库中
    C# winform 动态操作webService
    c# Winform实现发送邮件
    C# 网络编程 TcpListener
    1122考试T2
    1121考试总结
  • 原文地址:https://www.cnblogs.com/Surprisezang/p/8882450.html
Copyright © 2011-2022 走看看