求助,这两个写法哪里不同了?
  • 板块学术版
  • 楼主wenyida
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/5/15 15:19
  • 上次更新2023/10/28 01:22:41
查看原帖
求助,这两个写法哪里不同了?
609433
wenyida楼主2022/5/15 15:19

一道很简单的思维题,题目本身不重要,可是有个很离谱的question

#include<bits/stdc++.h>
using namespace std;
int n,m;
long long a[200005],qzh[200005],ans;
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;++i)cin>>a[i];
    sort(a+1,a+1+n);
    for(int i=1;i<=n;++i){
        qzh[i]+=qzh[i-1]+a[i];
    }
    for(int i=1;i<=n;++i){
        int d=((m-qzh[i])/i)+1;//爆0了
        if(d>0)ans+=d;
    }
    cout<<ans;
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n,m;
long long a[200005],qzh[200005],ans;
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;++i)cin>>a[i];
    sort(a+1,a+1+n);
    for(int i=1;i<=n;++i){
        qzh[i]+=qzh[i-1]+a[i];
    }
    for(int i=1;i<=n;++i){
        int d=((m-qzh[i]+i)/i);//只改了这个式子,就ac了
        if(d>0)ans+=d;
    }
    cout<<ans;
    return 0;
}

题目描述:

小绮同样喜欢购物,简单地说就是买很多东西,且很多东西都会重复买,原因就是钱多, 她每天都可以得到 m 元,但这些钱如果在一天中没有被用完,就会神奇地消失掉,也就是 说,她每天都有 m 元。 现在有 n 件小绮想要买的商品,其中第 i 件商品在第一天的价格为 ai ,神奇的是, 每过一天,这些商品的价格都会上涨 1 元,即在第 j 天时,第 i 件商品的价格为 ai + j − 1, 这些商品每天都有且只会有一个,即小绮每天只能买同一件商品一次。 小绮想要尽可能的多买东西,即买到的商品数量越多越好,请你帮她找出这个最大值。 输入格式: 第一行两个数字,分别为 n 、 m 第二行 n 个数字,表示 ai 数组的值

输出格式: 一个数字,即答案

样例输入: 3 7 2 1 2

样例输入: 11

样例解释: 在第一天,价格为 2、1、2 ,此时最多可以买 3 件商品

在第二天,价格为 3、2、3 ,此时最多可以买 2 件商品

在第三天,价格为 4、3、4 ,此时最多可以买 2 件商品

在第四天,价格为 5、4、5 ,此时最多可以买 1 件商品

在第五天,价格为 6、5、6 ,此时最多可以买 1 件商品

在第六天,价格为 7、6、7 ,此时最多可以买 1 件商品

在第七天,价格为 8、7、8 ,此时最多可以买 1 件商品

在第八天,价格为 9、8、9 ,此时无法再购买商品

因此答案为 3 + 2 + 2 + 1 + 1 + 1 + 1 = 11

数据范围: 对于 20% 的数据,有 n <= 10, ai <= 5, m <= 10

对于 100% 的数据,有 n <= 200000, ai <= 10^9, m <= 10^9

2022/5/15 15:19
加载中...