2020寒假【gmoj2416】【Berry Picking】

2023-11-07 01:00

本文主要是介绍2020寒假【gmoj2416】【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
数据范围限制

测试点 1-3 满足 K≤10。
测试点 4-10 没有额外限制。

提示

如果 Bessie 在一个篮子里装树 2 的 6 个浆果
两个篮子里每个装树 3 的 4 个浆果
一个篮子里装树 4 的 4 个浆果
那么她能够得到两个各装有 4 个浆果的篮子,总共 8 个浆果。

分析

假设 Elsie 拿的篮子里面果子数最小值为 m ,那么最好情况是她拿的篮子里全都是 m 个果子。我们可以从1 到 max ai 。
枚举这个 m,令能装满的(也就是装了 m 个果子的)篮子数为 L。分类讨论:

  1. L<2K:不能满足最小条件,停止枚举。
  2. L≥K :此时 Bessie 能拿到的就是 mK/2 个果子,更新答案即可。
    这里的关键是每棵树上 在装满若干篮子之后 剩余的果子数,也就是 aimod a_i mod m 。我们以 a_i mod m为关键字从大到小对 a 数组排序,排序结果为,Bessie 拿的果子数就是:
    在这里插入图片描述

上代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring> 
using namespace std;
int n,k,moda,ans,maxa;
int a[100001];
bool cmp(int l,int r)
{return (l%moda)>(r%moda);
}
int main()
{freopen("berries.in","r",stdin);freopen("berries.out","w",stdout);cin>>n>>k;for(int i=0;i<n;i++){cin>>a[i];maxa=max(maxa,a[i]);}for(int i=1;i<=maxa;i++){int temp=0;for(int j=0;j<n;j++){temp+=a[j]/i;} if(temp<k/2) break;if(temp>=k){ans=max(ans,i*(k/2));continue;}moda=i;sort(a,a+n,cmp);int t=i*(temp-k/2);for(int j=0;j<n&&j+temp<k;j++){t+=(a[j]%moda);} ans=max(ans,t);}cout<<ans;fclose(stdin);fclose(stdout);return 0;
}

这篇关于2020寒假【gmoj2416】【Berry Picking】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/360187

相关文章

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

2014级寒假特训之并查集专题

Problem A: Double和XXZ的生日宴请 Time Limit: 1 Sec   Memory Limit: 128 MB Submit: 9   Solved: 7 [ Submit][ Status][ Web Board] [ Edit] [ TestData] Description Double 和 XXZ同一天生日,他们俩30岁生日那天,当年

2020年SEO行业发展变化和趋势分析!

一、搜索引擎算法发展轨迹 第一阶段:人工目录(1997年-2001年“雅虎早期搜索模式”); 第二阶段:文本分析(2001年-2004年“以关键词和背景颜色一样,堆积大量关键词,就会有非常好的排名; 第三阶段:链接分析(2004年-2009年“以反向链接为核心算法的阶段”),这时行业内有句话是内容为王,外链为皇; 第四阶段:智能分析(2009年-现在“以满足用户人性化需求的用户浏览行为分析

2020年数据术语的故事

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 2020年整个技术圈子要说话题最多的,应该是大数据方向。新感念层出不穷,数据湖概念就是其中之一。这篇文章是关于数据仓库、数据湖、数据集市、数据中台等一些列的概念和发展进程。希望给大家带来一个全面的感知。 本文作者:Murkey学习之旅、开心自由天使 本文整理:大数据技术与架构,未经允许不得转载。 如今,随着诸如互联网以及物联网等

汇总(三):2020年12月

1.mysql数据库中,字段类型为tinyint(1)的,在select时,不显示正常的数字而是true或false?  传送门

2020 1.1版本的idea中git的使用场景

1、克隆项目 File-->New-->Project from Version Control 2、拉取远程的分支到本地 右下角-->(Remote Branches)选定分支-->checkout 3、将master分支更新的代码合并至bry分支并提交到远程仓库    (目的:实时与master的最新代码保持一致) 右下角-->(Local Branches)checkout br

BUUCTF PWN wp--bjdctf_2020_babystack

第一步   checksec一下,该题是64位的,该题目大概率是一道栈溢出(因为题目里面提到了stack) 分析一下这个二进制保护机制: Arch: amd64-64-little 这表示二进制文件是为64位AMD处理器设计的,使用的是小端序(little-endian)格式。RELRO: Partial RELRO RELRO(Relocation Read-Only)是一种安全特性,旨

BUUCTF—[网鼎杯 2020 朱雀组]phpweb

题解 打开题目是这样子的。 啥也不管抓个包看看,从它返回的信息判断出func后面的是要调用的函数,p后面的是要执行的内容。 那我们直接执行个系统命令看看,可以看到返回了hack,估计是做了过滤。 func=system&p=ls 直接读取源码看看咯,可以看到过滤了好多函数,反正我认识的可以进行命令执行的函数都给禁了。 func=file_get_contents&p=ind

寒假集训第二天——线性表

现在时间是北京时间1点23分,第二天集训。。。 昨天花了老长时间把线性表看了下,表示很有压力,不大会用。。。 先说下我学到的线性表的皮毛。。。 首先是链表的构建,构建有两种方式: 顺序链表(尾插法建单链表) #include<stdio.h>struct node{int date;struct node *next;};int main(){int i,n;node *he

寒假集训第一天——结构体

期待已久的寒假集训终于开始了,第一天讲的内容比较简单——结构体,之前就学了点。。。 表示普通的结构体会用,涉及到指针都不大会,今天算是学了点指针的用法。。。 作业描述如下: 结构体 今天作业  1.定义一个acmer结构体,包括以下信息:姓名,学号,手机号,做题数,出生日期,其中出生日期date也是一个结构体,包括年、月、日  2.建立结构体数组,实现对多个同学