首页 > 其他分享 >Barrels CodeForces - 1430B

Barrels CodeForces - 1430B

时间:2022-09-23 14:56:14浏览次数:54  
标签:Barrels 1430B 10 int CodeForces 水量 测试用例

Barrels CodeForces - 1430B

你有 n 个桶放在一排, 从左到右开始编号分别为 1~n. 最初, 第 i 桶装的水是 ai 升.
你可以把水从一个桶倒到另一个桶。 在这个过程中, 你可以两个选择两个桶 x 和y (第 x个桶不应该为空) ,
然后从桶x 向桶 y 倒水(可能是所有的水).你可以假设桶的容量是无限的,所以你可以在每个桶里倒入任何数量的水。
如果最多可以倒水 k 次.计算桶中最大和最小水量之间的最大可能差。

举例:如果你有四个桶,每个桶里装 5 升水,k=1,你可以从第二个桶里倒5升水到第四个桶里,
所以桶里的水量是 [5,0,5,10],最大和最小的差值是10;
如果所有的桶都是空的,你就不能做任何操作,所以最大和最小的量之差仍然是0。

Input

第一行包含一个整数 t (1 < t < 1000) — 测试用例的数量。
每个测试用例的第一行包含两个整数 n 和 k(1≤k<n<2e5) — 桶数和可以浇注的数量。
第二行包含 n 整数 a1, a2, ...... an (0≤ai≤1e9), 其中ai 是第 i 个桶的初始水量。
保证 n 个以上测试用例的总和不超过 2e5。

Output

对于每个测试用例,如果最多可以倒水k 次,请打印桶中最大和最小水量之间的最大可能差值。

Sample Input

2
4 1
5 5 5 5
3 2
0 0 0

Sample Output

10
0

分析

直接对水量升序排序,从大到小取 k 个水桶倒一起,sum+=a[i]。
如果 k 为 0,则直接用 (最大水 - 最小水)

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e6+10,INF=0x3f3f3f3f;
int a[N];
int main() {
    // freopen("data.in", "r", stdin);
    int t,n,k; cin>>t;
    while(t--) {
        cin>>n>>k;
        for(int i=1; i<=n; i++) cin>>a[i];
        sort(a+1, a+1+n);
        LL sum=0;
        for(int i=n; i>=n-k; i--) sum += a[i];
        if(k>0) cout<<sum<<endl;
        else cout<<a[n]-a[1]<<endl;
    }
    return 0;
}

标签:Barrels,1430B,10,int,CodeForces,水量,测试用例
From: https://www.cnblogs.com/hellohebin/p/16722720.html

相关文章

  • Fair Numbers CodeForces - 1465B
    FairNumbersCodeForces-1465B我们定义一个好数规则如下:它能够整除自己的每一个非零位。例如说,102是一个好数,因为它能整除1和2。282则不是,因为它不能整除8。......
  • Split Into Two Sets CodeForces - 1702E
    SplitIntoTwoSetsCodeForces-1702EPolycarp有一副有n张牌的(数字n为偶数)多米诺骨牌.每张多米诺骨牌上写有两个在1到n之间的数字.请问能否把骨牌分成两......
  • Boy or Girl CodeForces - 236A
    BoyorGirlCodeForces-236A如果一个人的用户名中不同的字符数是奇数,那么他就是一个男性,否则她就是一个女性(鬼知道为什么)。给你一个表示用户名的字符串,请帮助小A确定这......
  • Codeforces Round #811
    目录写在前面ABCDEFG写在最后写在前面比赛地址:https://codeforces.com/contest/1714。没什么整理价值的题,但是markdown语法及博客文风复健。A\(t\)组数据,每组数据......
  • Pair of Topics CodeForces - 1324D
    PairofTopicsCodeForces-1324D你有两个长度为n的数列a和b。现在我们定义,若存在i和j,满足:(i<j)且(a[i]+a[j]>b[i]+b[j]),则我们称数对<i,j>为JNU数对你的目......
  • Codeforces Round #298 (Div. 2) - D. Handshakes
    贪心+构造题意有\(n(1<=n<=2*10^5)\)个人,每分钟有一个人进入房间,房间里任意3个人可以组队开始工作并一直持续下去,且只要房间里至少有3个人,他们就可以在任意时间......
  • Codeforces Round #814
    难得遇上一把CF,结果unr了。AMainakandArray显然最优策略只有三种:选一个\(i\in[1,n-1]\)的\(a_i\)作为\(a_1\);选一个\(i\in[2,n]\)的\(a_i\)作为\(a......
  • Polycarp Writes a String from Memory CodeForces - 1702B
    PolycarpWritesaStringfromMemoryCodeForces-1702B给定大小为n的字符串,至多每3种不同的字母分为一组,最少将字符串分为多少组?Input第一行输入数据包含一个整......
  • Jzzhu and Children CodeForces - 450A
    JzzhuandChildrenCodeForces-450A有n个孩子在老师的学校上学。老师决定给这些孩子一些苹果。让我们将所有孩子编号为1到n。第i个孩子想要获得至少ai的苹果......
  • CodeForces-189A Cut Ribbon-必须装满的背包
    题意:给定n,s.t. a1*x1+a2*x2+a3*x3=n(1)max:x1+x2+x3对比完全背包,(1)式取等号而不是<=这个差别影响了我们的结果比如:n=7,a1=a2=5,a3=2如果按照完全背包的转移:则在dp[7......