求问CSP-J T2
  • 板块灌水区
  • 楼主Ternence_Tao
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/21 22:20
  • 上次更新2023/11/2 12:05:41
查看原帖
求问CSP-J T2
737964
Ternence_Tao楼主2023/10/21 22:20

T2不是贪心?还是我的思路有问题?

谷上90,小图灵40

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
const int N=1e5+10;

ll n,d;
ll a[N],v[N];

int main(){
	freopen("road.in","r",stdin);
	freopen("road.out","w",stdout);
	
	scanf("%lld%lld",&n,&d);
	for(int i=1;i<n;++i)
		scanf("%lld",&v[i]);
	for(int i=1;i<=n;++i)
		scanf("%lld",&a[i]);
	ll res=0,bef=0;
	for(int i=1;i<=n;){
		ll k=i+1,sum=v[i];
		while(a[k]>=a[i]&&k<=n){
			sum+=v[k];
			++k;
		}
		ll oil=(sum-bef)%d==0?(sum-bef)/d:(sum-bef)/d+1;
		res+=oil*a[i];
		bef=oil*d-(sum-bef);
		i=k;
		//cout<<oil<<" "<<bef<<" "<<sum<<endl;
	}
	printf("%lld\n",res);
	return 0;
}
2023/10/21 22:20
加载中...