zoukankan      html  css  js  c++  java
  • hiho #1272 买零食 [Offer收割]编程练习赛2

    #1272 : 买零食

    时间限制:5000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    小Ho很喜欢在课间去小卖部买零食。然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰霜著称。第一次去一教小卖部买零食的时候,小Ho由于不懂事买了好一大堆东西,被小卖部姐姐给了一个“冷若冰霜”的眼神,食欲都下降了很多。

    从那以后,小Ho就学乖了,去小卖部买东西只敢同时买3包以内的零食,并且价格加起来必须是5的整数倍,方便小卖部姐姐算价格。

    但是小Ho不擅长计算,所以他把小卖部里所有零食的价格以及他对这个零食的渴望度都告诉了你,希望你能够帮他计算出在不惹恼小卖部姐姐的前提下,能够买到零食的渴望度之和最高是多少?

    输入

    每个输入文件包含多组测试数据,在每个输入文件的第一行为一个整数Q,表示测试数据的组数。

    每组测试数据的第一行为一个正整数N,表示小卖部中零食的数量。

    接下来的N行,每行为一个正实数A和一个正整数B,表示这种零食的价格和小Ho对其的渴望度。

    一种零食仅有一包。

    对于100%的数据,满足1 <= Q <= 10,1<=N<=50,0<A<=10,1<=B<=100。

    对于100%的数据,满足A的小数部分仅可能为0.5或0。

    输出

    对于每组测试数据,输出一个整数Ans,表示小Ho可以获得最大的渴望度之和。

    样例输入
    1
    4
    0.5 6
    4.5 7
    5.0 4
    2.0 9
    
    样例输出
    17


    解题思路:
    数据量特别小,直接暴力枚举;
    AC代码
     1 #include "iostream"
     2 #define N 51
     3 
     4 using namespace std; 
     5 
     6 int max(int a, int b)
     7 {
     8     return a > b ? a: b;
     9 }
    10 
    11 int main()
    12 {
    13     int q;
    14     double tag;
    15     cin >> q;
    16     while (q--)
    17     {
    18         int n;
    19         double aa[N];
    20         int a[N],b[N];
    21 
    22         cin >> n;
    23         for (int i = 0; i < n;i++)
    24         {
    25             cin >> aa[i] >> b[i];
    26             a[i] = 10 * aa[i];
    27         }
    28 
    29         int ans = 0; 
    30 
    31         for (int i = 0; i < n; i++)
    32         {
    33             if (a[i] % 50 == 0)
    34                 ans = max(ans, b[i]);
    35         }
    36         for (int i = 0; i < n; i++)
    37         {
    38             for (int j = i+1; j < n; j++)
    39             {
    40                 if ((a[i] + a[j]) % 50 == 0)
    41                     ans = max(ans, b[i] + b[j]);
    42             }
    43         }
    44         for (int i = 0; i < n; i++)
    45         {
    46             for (int j = i+1; j < n; j++)
    47             {
    48                 for (int k = j+1; k < n; k++)
    49                 {
    50                     if ((a[i] + a[j] + a[k]) % 50 == 0)
    51                         ans = max(ans, b[i] + b[j] + b[k]);
    52                 }
    53             }
    54         }
    55         cout << ans << endl;
    56     }
    57 }
  • 相关阅读:
    软件工程2019:第3次作业—— 团队项目阶段一: 项目需求分析
    软件工程2019:第2次作业—— 时事点评
    第1次作业—— 自我介绍 + 软工五问(热身运动)
    软工作业(4)用户体验分析:以 “师路南通网站” 为例
    软工作业(3):用户体验分析
    软工作业: (2)硬币游戏—— 代码分析与改进
    《软件工程导论》读后感想与疑惑
    软工作业(1)
    用户体验分析:以 “师路南通网站” 为例
    用户体验分析: 以 “南通大学教务管理系统微信公众号” 为例
  • 原文地址:https://www.cnblogs.com/SeekHit/p/5519635.html
Copyright © 2011-2022 走看看