51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1279|回复: 2
打印 上一主题 下一主题

pat乙级1020这里为什么设置重量为整型会导致从测试点2过不去?

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:47
  • 签到天数: 528 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2021-11-18 09:48:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点

    月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。

    注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼、以及 5 万吨第 3 种月饼,获得 72 + 45/2 = 94.5(亿元)。

    输入格式:
    每个输入包含一个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N 表示月饼的种类数、以及不超过 500(以万吨为单位)的正整数 D 表示市场最大需求量。随后一行给出 N 个正数表示每种月饼的库存量(以万吨为单位);最后一行给出 N 个正数表示每种月饼的总售价(以亿元为单位)。数字间以空格分隔。

    输出格式:
    对每组测试用例,在一行中输出最大收益,以亿元为单位并精确到小数点后 2 位。

    1. #include <iostream>
    2. #include <algorithm>
    3. using namespace std;
    4. struct yuebing{
    5.     double  price, danjia;
    6.     int weight;
    7. };
    8. bool cmp(yuebing a, yuebing b){
    9.     return a.danjia > b.danjia;
    10. }
    11. int main(){
    12.     int n, sub = 0;
    13.     double spend = 0, need;
    14.     yuebing s[1000];
    15.     cin >> n >> need;
    16.     for(int i = 0; i < n; i++)
    17.         cin >> s[i].weight;
    18.     for(int i = 0; i < n; i++){
    19.         cin >> s[i].price;
    20.         s[i].danjia = s[i].price / s[i].weight;
    21.     }
    22.     sort(s, s+n, cmp);
    23.     while(need && sub < n){
    24.         if(need >= s[sub].weight){
    25.             need -= s[sub].weight;
    26.             spend += s[sub].price;
    27.         }
    28.         else{
    29.             spend += s[sub].danjia*need;
    30.             need = 0;
    31.         }
    32.         sub++;
    33.     }
    34.     printf("%.2f", spend);
    35.     return 0;
    36. }
    复制代码

    这里要求的重量是正整数,并且后边的计算都是与浮点计算,为什么最后测试点2会错误呢?如果把weight换成double类型就会通过
    《算法笔记》书上写的是方便后边计算,但是不太理解为什么会出错


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 1803 天

    连续签到: 2 天

    [LV.Master]测试大本营

    2#
    发表于 2021-11-19 09:22:41 | 只看该作者
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    10 小时前
  • 签到天数: 1518 天

    连续签到: 2 天

    [LV.Master]测试大本营

    3#
    发表于 2021-11-19 12:07:44 | 只看该作者
    类型计算的问题吧
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-19 20:21 , Processed in 0.061881 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表