1 条题解
-
0
这道题用了贪心和模拟的算法。想拿满分还是要有一点思路的,先看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; } 这道题就完美地结束了,只供参考,不许抄袭!
- 1
信息
- ID
- 626
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- 递交数
- 98
- 已通过
- 21
- 上传者