zoukankan      html  css  js  c++  java
  • CodeForces 16B Burglar and Matches(贪心)

    B. Burglar and Matches
    time limit per test
    0.5 second
    memory limit per test
    64 megabytes
    input
    standard input
    output
    standard output

    A burglar got into a matches warehouse and wants to steal as many matches as possible. In the warehouse there are mcontainers, in the i-th container there are ai matchboxes, and each matchbox contains bi matches. All the matchboxes are of the same size. The burglar's rucksack can hold n matchboxes exactly. Your task is to find out the maximum amount of matches that a burglar can carry away. He has no time to rearrange matches in the matchboxes, that's why he just chooses not more than n matchboxes so that the total amount of matches in them is maximal.

    Input

    The first line of the input contains integer n (1 ≤ n ≤ 2·108) and integer m (1 ≤ m ≤ 20). The i + 1-th line contains a pair of numbers ai and bi (1 ≤ ai ≤ 108, 1 ≤ bi ≤ 10). All the input numbers are integer.

    Output

    Output the only number — answer to the problem.

    Sample test(s)
    input
    7 3
    5 10
    2 5
    3 6
    
    output
    62
    
    input
    3 3
    1 3
    2 2
    3 1
    
    output
    7

    非常水的贪心  直接每次选装的多的盒子  n减去盒子数即可了

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int M = 25;
    int a[M], b[M], c[M], n, m, ans;
    
    bool cmp (int i, int j)
    {
        return b[i] > b[j];
    }
    
    int main()
    {
        scanf ("%d%d", &n, &m);
        for (int i = 1; i <= m; ++i)
        {
            c[i] = i;
            scanf ("%d%d", &a[i], &b[i]);
        }
        sort (c + 1, c + m + 1, cmp);
        ans = 0;
        for (int i = 1; i <= m; ++i)
        {
            if (n >= a[c[i]])
            {
                n -= a[c[i]];
                ans += a[c[i]] * b[c[i]];
            }
            else
            {
                ans += n * b[c[i]];
                break;
            }
        }
        printf ("%d
    ", ans);
        return 0;
    }


  • 相关阅读:
    Android BitmapUtils工具类
    Android 获取网络类型
    Android 打开文件或文件夹777权限
    Android 获取颜色RGB值
    Android常用数据类型转换
    本周总结
    利用Volley框架实现简单的Android与servlet信息交互
    response.getWriter().write("")中文乱码问题
    软件工程开课博客
    java读取中文文本文件乱码问题
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6938172.html
Copyright © 2011-2022 走看看