1 条题解

  • 0
    @ 2024-8-24 14:25:22

    这道题用了贪心和模拟的算法。想拿满分还是要有一点思路的,先看85分代码。

    #include <bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    int v[N],a[N];
    int n,d;
    int minn=INT_MAX;
    int main() {
        cin>>n>>d;
        for (int i=1;i<=n-1;i++) cin>>v[i];
        int ans=0,s=0;
        for (int i=1;i<=n;i++){
            cin>>a[i];
            s+=v[i];
            minn=min(minn,a[i]);
            if(s>0){
                ans+=(s+d-1)/d*minn;
                s-=(s+d-1)/d*d;
            }
        } cout<<ans;
        return 0;
    }
    

    是什么原因呢······没开long long。 就这一个小细节,丢了15分。 来吧,AC代码!

    
    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N=1e5+10;
    int v[N],a[N];
    int n,d;
    int minn=INT_MAX;
    int main() {
        cin>>n>>d;
        for (int i=1;i<=n-1;i++) cin>>v[i];
        ll ans=0,s=0;
        for (int i=1;i<=n;i++){
            cin>>a[i];
            s+=v[i];
            minn=min(minn,a[i]);
            if(s>0){
                ans+=(s+d-1)/d*minn;
                s-=(s+d-1)/d*d;
            }
        } cout<<ans;
        return 0;
    }
    这道题就完美地结束了,只供参考,不许抄袭!

    信息

    ID
    626
    时间
    1000ms
    内存
    512MiB
    难度
    7
    标签
    递交数
    98
    已通过
    21
    上传者