zoukankan      html  css  js  c++  java
  • 运输

    【题目描述】
    现在已知N 件商品,和搬运它们其中每一件的费用。现在搬家公司老板Mr.sb 决定让我们每次任意选取2 件商品。然后这2 件商品只算一件商品的费用。但是这个商品的搬运费用是将选出的2 个商品的费用之和除以k 的运算结果。如此反复。直到只收一件商品的钱。这个就是商店要付的费用。掌柜的想尽可能的少付钱,以便将更多的钱捐给希望工程。所以请你帮他计算一下最少只用付多少钱。

    【输入】
    n,k
    w1,w2,...,wn(每一件商品的搬运费用)
    n,k<=10000

    【输出】
    最少付多少钱

    样例输入
    5 2
    1 2 3 4 5

    样例输出
    1

    水贪心,一直合并最贵的两件商品,知道剩一件。用优先队列实现

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<algorithm>
    #include<cstring>
    #include<queue>
    using namespace std;
    
    #define rep(i ,a, n) for(int i = a; i <= n; ++i)
    #define per(i, n, a) for(int i = n; i >= a; --i)
    typedef long long ll;
    const int maxn = 1e5 + 5; 
    
    priority_queue<int>q;
    int a[maxn], n, k;
    int main()
    {
        freopen("trans.in", "r", stdin);
        freopen("trans.out", "w", stdout);
        scanf("%d%d", &n, &k);
        rep(i, 1, n) 
        {
            int a; scanf("%d", &a);
            q.push(a);
        }
        rep(i, 1, n - 1)
        {
            int a = q.top(); q.pop();
            int b = q.top(); q.pop();
            q.push((a + b) / k);
        }
        printf("%d
    ", q.top());
        return 0;
    }
  • 相关阅读:
    【hdu4057】 恨7不成妻
    【hdu3709】 Balanced Number
    【hdu3555】 Bomb
    【hdu2809】 不要62
    【bzoj3992】 SDOI2015—序列统计
    【uoj125】 NOI2013—书法家
    【bzoj1833】 ZJOI2010—count 数字计数
    【bzoj1026】 SCOI2009—windy数
    【bzoj2780】 Sevenk Love Oimaster
    【bzoj3930】 CQOI2015—选数
  • 原文地址:https://www.cnblogs.com/mrclr/p/8584709.html
Copyright © 2011-2022 走看看