题解 luogu P6002 【[USACO20JAN]Berry Picking S】
思路
\qquad由于这题每棵树上的果子的数据较小,我们可以考虑贝茜的妹妹所拿的框中都是www个苹果,那么只要一一枚举www就再求贝茜在这种情况下可以拿到的最多的苹果然后取最大就好了。
\qquad详情见代码。
代码
#include<bits/stdc++.h>//万能头
#define ll long long
using namespace std;
int n,k,a[5001],l,ans;//ans表示答案
priority_queue<int>q,kong;//利用优先队列取最优,kong用来快速清空。
void doit(int x){//x表示一个篮子最多的果子数 q=kong;l=0;for(int i=1;i<=n;i++){l+=a[i]/x;//按这种装法可以装满多少篮子 q.push(a[i]%x);//余下来的直接加入优先队列 }
}
void kk(int x){int w;//w记录在一个篮子最多装x个的情况下贝茜可以得多少个 w=(l-(k/2))*x;//剩下来的篮子给bessie for(int i=1;i<=k-l;i++){w+=q.top();//取剩下最多的补完k个篮. q.pop();}//也可以直接存到数组里然后sort排序后再取. if(ans<w)ans=w;
}
int main () {scanf("%d%d",&n,&k);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}sort(a+1,a+1+n);for(int i=a[n];i>=a[1];i--){doit(i);if(l>=k){//如果有一个可以取到,那么低的必然能取到,答案也不会更优,所以直接退出。 if(ans<k*i/2)ans=k*i/2; break;}else if(l<k/2)continue;//取不到直接跳过(也就是说bessie的妹妹不可能最小的一个篮子是i个) else kk(i);}printf("%d",ans);//输出 return 0;
}
题解 luogu P6002 【[USACO20JAN]Berry Picking S】相关推荐
- 题解 luogu P2568 GCD
题解 luogu P2568 GCD 时间:2019.3.11 欧拉函数+前缀和 题目描述 给定整数\(N\),求\(1\le x,y \le N\)且\(\gcd(x,y)\)为素数的数对\((x, ...
- 【USACO 2020 January Silver】Berry Picking 题解
题目描述 Bessie 和她的妹妹 Elsie 正在 Farmer John 的浆果园里采浆果.Farmer John 的浆果园里有 N 棵浆果树(1≤N≤1000):树 i 上有 Bi 个浆果(1≤ ...
- 题解P3942_将军令
初始数组忘了赋初值,,,我真是个机灵鬼 还有这题是三倍经验P2279&&P2016,这题的实现思想来自P2279首个题解 luogu 简化题意 给你一棵树,你有一些可以覆盖范围为$k$ ...
- 蓝桥杯取球博弈c语言算法,1298: [蓝桥杯2016初赛]取球博弈 (博弈)
1298: [蓝桥杯2016初赛]取球博弈 (博弈) 1298: [蓝桥杯2016初赛]取球博弈 (博弈) #include #include #include #include #include # ...
- luogu P1549 棋盘问题(2) 题解
luogu P1549 棋盘问题(2) 题解 题目描述 在\(N * N\)的棋盘上\((1≤N≤10)\),填入\(1,2,-,N^2\)共\(N^2\)个数,使得任意两个相邻的数之和为素数. 例如 ...
- 【luogu P5022 旅行】 题解
题目连接:https://www.luogu.org/problemnew/show/P5022 \(NOIP2018 DAY2T1\) 考场上只写了60分,很容易想到当 m = n - 1 时的树的 ...
- 题解 BZOJ1026 luogu P2657 [SCOI2009]windy数 数位DP
BZOJ & luogu 看到某大佬AC,本蒟蒻也决定学习一下玄学的数位$dp$ (以上是今年3月写的话(叫我鸽神$qwq$)) 思路:数位$DP$ 提交:2次 题解:(见代码) #inclu ...
- 【luogu P2341 [HAOI2006]受欢迎的牛】 题解
题解报告:https://www.luogu.org/problemnew/show/P2341 我们把图中的强连通分量缩点,然后只有出度为0的牛是受欢迎的,这样如果出度为0的牛只有一个,说明受所有牛 ...
- Luogu P2708 硬币翻转 题解
Luogu p2708题解 思路: 由于我们这个题目的长度不知道,所以我们不能一次性输入所有的硬币的状态,也许会爆数组(Ps:我没试过我不是知道).所以我们为了保险采取用getchar()一个一个读入 ...
- 【luogu P2169 正则表达式】 题解
题目链接:https://www.luogu.org/problemnew/show/P2169 tarjan缩点 + SPFA 缩完点之后加边注意别写错. 也可以不用建两个图,可以在一张图上判断是否 ...
最新文章
- 最有效阻止SSH暴力破解的方法
- CentOS 6.5安装MongoDB 2.6(多yum数据源)
- PMCAFF|百度客户端产品:高效开发客户端产品的正确姿势
- 【实施工程师】Linux查看日志后100行
- php 代码 自动检查工具下载,PHP_CodeSniffer安装和使用教程(自动代码检查规范工具)...
- 协同过滤Collaborative Filtering
- 078 numpy模块
- gettype php,gettype
- delphi xe 连接mysql_delphixe7支持MYSQL连接的方式
- 如何利用百度知道推广网站
- python爬取墨迹天气的8月份的温度情况并发送到邮箱
- 旁观OpenGL里的透视投影矩阵
- vim正则表达式(转)
- python搜狗微信搜索wechatsogou 用法
- H5 百度高德地图导航
- 从零到壹搭建一个商城架构--性能指标
- 统计字符串中字符出现次数以及排序
- 学生信息管理系统(C语言版本+源码)
- 设计模式--提供者模式provider
- 判断两直线正交 平行问题