2020.4.11 C组模拟赛题解

目录:

T1:Berry Picking
T2:Loan Repayment
T3:Wormhole Sort

正题:

T1:Berry Picking

题目描述

Bessie 和她的妹妹 Elsie 正在 Farmer John 的浆果园里采浆果。Farmer John 的浆果园里有 N 棵浆果树(1≤N≤1000);树 i 上有 Bi 个浆果(1≤Bi≤1000)。Bessie 有 K 个篮子(1≤K≤1000,K 为偶数)。每个篮子里可以装同一棵树上采下的任意多个浆果,但是不能装来自于不同的树上的浆果,因为它们的口味可能不同。篮子里也可以不装浆果。
Bessie 想要使得她得到的浆果数量最大。但是,Farmer John 希望 Bessie 与她的妹妹一同分享,所以 Bessie 必须将浆果数量较多的 K/2 个篮子给 Elsie。这表示 Elsie 很有可能最后比 Bessie 得到更多的浆果,这十分不公平,然而姐妹之间往往就是这样。
帮助 Bessie 求出她最多可以得到的浆果数量。

输入

输入的第一行包含空格分隔的整数 N 和 K。
第二行包含 N 个空格分隔的整数 B1,B2,…,BN。

输出

输出一行,包含所求的答案。

样例输入

5 4
3 6 8 4 2

样例输出

8

分析:

排序,以 %后的结果来排序
不断平均分,累加后找最大值

CODE:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int n,k,a[1001],maxn,f,ans,t,b;
bool cmp(int x,int y)
{
   
    return x%t>y%t;  //以%后来排序
}
int main(){
   
	freopen("berries.in","r",stdin);
	freopen("berries.out","w",stdout);
	scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)
    {
   
        scanf("%d",&a[i]);
        maxn=max(maxn,a[i]);  //找出最大值
    }
    for(int 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值