CF1671C Dolce Vita 题解
jiangtaizhe001 · · 题解
可能更好的阅读体验
题目大意
摘自洛谷的翻译:
动乱的时代就要来了,因此你决定储备一些糖。有
另外一个问题就是糖价每天都在上涨:第一天
然而,你每天的预算只有
最终,每包糖的价格都会超过
题目解析
不难想到每天肯定买便宜的糖,由于每天所有糖涨价的速度是一样的,所以相对的大小不会变。
所以首先我们需要排序。
然后直接暴力做显然是不可行的。
我们可以先做一次前缀和,枚举
复杂度
参考代码:
void work(){
n=read(); x=read(); int i; for(i=1;i<=n;i++) a[i]=read(); sort(a+1,a+n+1); ans=0;
for(i=1;i<=n;i++) a[i]+=a[i-1];
for(i=1;i<=n;i++){
l=-1,r=x+10;
while(l+1<r){
mid=(l+r)>>1;
if(a[i]+(ll)mid*(ll)i<=x) l=mid; else r=mid;
} ans+=l+1;
} print(ans),pc('\n');
}