`

【让我悲催的水题】HDU 1070 Milk

阅读更多
http://acm.hdu.edu.cn/showproblem.php?pid=1070

题意:
①:milk最多只能喝5天
②:每天喝200ml
③:如果剩下的小于200ml,就要扔掉
④:所有milk都是今天生产的
⑤:当有多个milk一样便宜时,选择体积最大的
给出商标+1瓶的价格+体积,找出最便宜的那种milk

错了11次灰常悲催

网上很多童鞋都排序了,其实这题根本不用排序……

错误代码:

#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#include <set>
//#include <map>
#include <queue>
#include <utility>
#include <iomanip>
#include <stack>
#include <list>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <ctype.h>
using namespace std;
#define inf 0x3fffffff

struct milk{
    char name[105];
    int p, v;
};

int main()
{
    int t, n, i, days, x;
    double mins, price;
    milk m[105];
    scanf ("%d", &t);
    while (t--)
    {
        scanf ("%d", &n);
        mins = inf;
        for (i = 0; i < n; i++)
        {
            scanf ("%s%d%d", m[i].name, &m[i].p, &m[i].v);
            if (m[i].v < 200)
                continue;
            if (m[i].v > 1000)
                m[i].v = 1000;    //核心错误,擅自修改了体积,导致条件⑤不成立
            days = m[i].v / 200;
            price = 1.0 * m[i].p / days;
            if (mins > price)
                mins = price, x = i;
            else if (mins == price && m[i].v > m[x].v)
                x = i;
        }
        printf ("%s\n", m[x].name);
    }
    return 0;
}


正确代码:
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#include <set>
//#include <map>
#include <queue>
#include <utility>
#include <iomanip>
#include <stack>
#include <list>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <ctype.h>
using namespace std;

struct milk{
    char name[105];
    int p, v;
};

int main()
{
    int t, n, i, days, x;
    double mins, price;
    milk m[105];
    scanf ("%d", &t);
    while (t--)
    {
        scanf ("%d", &n);
        mins = -1;
        for (i = 0; i < n; i++)
        {
            scanf ("%s%d%d", m[i].name, &m[i].p, &m[i].v);
            if (m[i].v < 200)    //忽略小于200lm的milk
                continue;
            if (m[i].v > 1000)
                price = 1.0 * m[i].p / 5;    //错点,一开始没理解,考虑成6天……
            else 
            {
                days = m[i].v / 200;
                price = 1.0 * m[i].p / days;
            }
            if (mins > price || mins < 0)   //x是暂时最便宜的标记 
                mins = price, x = i;
            else if (mins == price && m[i].v > m[x].v)    //条件⑤
                x = i;
        }
        printf ("%s\n", m[x].name);
    }
    return 0;
}
  • 大小: 1.3 KB
  • 大小: 20.5 KB
0
4
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics