zoukankan      html  css  js  c++  java
  • 6C.项链(C++)

    项链(C++)

    点击做题网站链接

    题目描述
    小B想给她的新项链染色。
    现在有m种颜色,对于第i种颜色,小B有aia_i单位的颜料,每单位颜料可以染项链的一个珠子;
    同时,小B对于第i种颜色的喜爱度为bib_i
    已知项链有n个珠子,求染色后每个珠子的颜色的喜爱度之和的最大值。
    (每个珠子只能至多被染一次,不被染色则喜爱度为0)

    输入描述:
    第一行两个数n,m
    第二行m个数aia_i
    第三行m个数bib_i

    输出描述:
    一个数表示答案

    示例1
    输入

    5 3
    1 2 3
    3 2 1

    输出
    9

    示例2
    输入

    5 3
    1 2 1
    3 2 1

    输出
    8

    备注:
    1n,m105,0ai,bi1061≤n,m≤10^5,0≤ai,bi≤10^6

    题目思路:

    贪心算法,定义一个结构体,从喜爱度由大到小排序。

    解题代码:

    #include <iostream>
    #include <algorithm>
    using namespace std;
    const int N = 1e6+5;
    struct st
    {
        int a;
        int b;
    }c[N];
    
    bool cmp(st x, st y) { return x.b > y.b; }
    
    int main()
    {
        int n,m,a[N],b[N],sum=0,Count=0;
        cin >> n >> m;
        for(int i=0;i<m;++i) cin >> c[i].a;
        for(int i=0;i<m;++i) cin >> c[i].b;
        sort(c,c+m,cmp);
        for(int i=0;i<m;++i)
        {
            Count += c[i].a;//先全部加上
            sum += c[i].a*c[i].b;
            if( Count>=n )
            {
                sum -= (Count-n)*c[i].b;//减去多余的
                break;
            }
        }
        cout << sum << endl;
    }
    
  • 相关阅读:
    Kubernetes之network: failed to set bridge addr: "cni0" already has an IP address different from xxx问题
    k8s的存储Volume
    系统漏洞扫描与分析软件
    linux图形化安装oracle
    JMX监控tomcat jdbc pool
    Hyper-V
    苹果手机
    读书
    clickhouse count
    clickhouse分布式表
  • 原文地址:https://www.cnblogs.com/yuzilan/p/10626106.html
Copyright © 2011-2022 走看看