P5017摆渡车TLE
  • 板块学术版
  • 楼主XCH_0803
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/8/12 20:41
  • 上次更新2023/10/27 15:42:52
查看原帖
P5017摆渡车TLE
454650
XCH_0803楼主2022/8/12 20:41
#include<bits/stdc++.h>
using namespace std;
int n,m,t,maxt;
long long f[4000400],cnt[4000400]; 
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>t;
		cnt[t]++;
		if(t>maxt){
			maxt=t;
		}
	}
	for(int i=0;i<=maxt+m;i++){
		long long tmp=0;
		for(int j=0;j<m&&i-j>=0;j++){
			tmp+=cnt[i-j]*((long long) j);
		}
		f[i]=tmp;
		if(i>=m){
			f[i]+=f[i-m];
		}
		for(int j=m+1;j<=2*m&&i-j>=0;j++){
			tmp+=cnt[i-j+1]*((long long) j-1);
			if(f[i-j]+tmp<=f[i]){
				f[i]=f[i-j]+tmp;
			}
		}
	}
	long long ans=f[maxt];
	for(int i=1;i<=m;i++){
		ans=min(ans,f[maxt+i]);
	}
	cout<<ans;
	return 0;
}

70分哪个大佬能帮忙改一改

2022/8/12 20:41
加载中...