codecomb 2085【肥得更高】
来源:互联网 发布:弱电网络系统 编辑:程序博客网 时间:2024/04/30 02:30
题目背景
自2009年以来,A、B站的历史就已经步入了农业变革的黎明期。
在两站的娱乐及音乐区,金坷垃制造业早已得到长足的发展,甚至有些地方还出现了坷垃翻唱的萌芽。
新兴肥料人开始走上历史的舞台。
他们需要新的意识形态,来为他们所追求的肥料辩护;
他们需要新的理念、新的手段,来为金坷垃的生产提供支持。
这样,一种崭新的肥料精神就诞生了。
肥料复兴,是反对肥料粗制滥造,追求创新的新肥料文化的运动。
它必将成为推动金坷垃走得更远、飞得更高的重要力量。
题目描述
现在,你有n亩的小麦地需要增产,你拥有一些金坷垃,但是金坷垃极其稀少,掺肥料也只够你撒K次。
众所周知,金坷垃能激活土壤深处的氮磷钾,同一块地可以撒多次肥料,但是效果是有略微衰减的。
实地考察后你发现,第i亩土地第x次撒肥料增产a[i]-x+1公斤。
hzwer将代替你去撒肥料,但是他是个蒟蒻,完全不动大脑,所以你想知道如果他随机撒肥料,最坏情况下小麦将增产多少,最好情况下将增产多少?(他最多只会对第i亩地撒肥料a[i]次)
输入格式
第一行两个整数n,K
第二行n个整数,第i个整数为a[i]
输出格式
输出最大值,最小值,空格隔开
样例数据 1
输入 [复制]
5 10
10 3 3 1 2
输出
58 26
备注
对于30%的数据n,k<=1000
对于70%的数据n,k<=200000
对于100%的数据n,k,a[i]<=1000000
题意是有n个数的序列,一次取一个数加入答案中,然后这个数的权值减1
求答案的最大值和最小值
首先最小值很简单,从小到大排序完贪心
求最大值的时候要求找出当前序列的最大值,然后一直取它取到它不再是最大值
显然堆维护一下就好了
#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<deque>#include<set>#include<map>#include<ctime>#define LL long long#define inf 0x7ffffff#define pa pair<int,int>#define pi 3.1415926535897932384626433832795028841971using namespace std;int n,m;LL ans1,ans2,des;LL a[1000010];inline LL read(){ LL x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}int main(){n=read();m=read();for (int i=1;i<=n;i++)a[i]=read();sort(a+1,a+n+1);des=m;for (int i=1;i<=n;i++){if (des>=a[i]){ans1+=a[i]*(a[i]+1)/2;des-=a[i];}else {ans1+=(2*a[i]-des+1)*des/2;break;}}make_heap(a+1,a+n+1);des=m;while (des!=0){int now=a[1];pop_heap(a+1,a+n+1);if (now-a[1]<des){des-=now-a[1]+1;ans2+=(now+a[1])*(now-a[1]+1)/2;a[n]=a[1]-1;push_heap(a+1,a+n+1);}else{ans2+=(2*now-des+1)*des/2;des=0;push_heap(a+1,a+n+1);}}printf("%lld %lld\n",ans2,ans1);}
0 0
- codecomb 2085【肥得更高】
- 肥得更高
- 模拟赛 肥得更高
- 飞得更高!
- 飞得更高
- 飞得更高
- 我要飞得更高
- 我要飞得更高
- 肥肥
- 汪峰的"飞得更高"
- 我要飞得更高系列一
- 放下包袱 你才能蹦得更高
- 职业规划:蹲下,为了跳得更高!
- 半年总结--我要飞得更高
- 飞得更高(一)陌生电话
- 飞得更高(四)皮包公司
- 飞得更高(五)下马威
- 互联网造梦人的光荣与梦想:飞得更高
- 对 熊大快跑Ver2.0.4 和支付的分析
- js 键盘事件示例
- eXtremeDB make命令参数
- eclispe system.out.println();快捷键
- 关于Java向上转型和向下转型以及类型还原
- codecomb 2085【肥得更高】
- leetcode-Maximum Subarray
- POJ 1742 Coins(dp)
- DB2 有数据的表新建(修改)自增长主键
- centos安装Hue 3.7.0
- 指针函数与函数指针的区别
- Struts2 拦截器和转换器
- 生日相同
- Fragment嵌套Fragment的时候容易出现白屏的现象