WA 15pts 求助
查看原帖
WA 15pts 求助
385165
ZeroF楼主2023/9/15 12:53

只过了4,7,13

#include<bits/stdc++.h>
#define int long long
using namespace std;
struct Node{
	int x,c,f;
	bool operator<(const Node &r)const{
		return x<r.x;
	}
}a[1010];
int dp[1010][10010];
deque<int>q;
signed main(){
	memset(dp,0x7f,sizeof(dp)); 
	int K,e,n;
	cin>>K>>e>>n;
	dp[0][0]=0;
	for(int i=1;i<=n;i++)cin>>a[i].x>>a[i].c>>a[i].f;
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++){
		while(!q.empty())q.pop_back();
		q.push_back(0);
		for(int j=0;j<=K;j++){
			while(!q.empty()&&j-q.front()>a[i].c)q.pop_front();
			int k=q.front();
			dp[i][j]=dp[i-1][k]+(j-k)*a[i].f+(a[i].x-a[i-1].x)*k*k;
			while(!q.empty()&&dp[i-1][q.back()]+(j-q.back())*a[i].f+(a[i].x-a[i-1].x)*q.back()*q.back()>dp[i-1][j])q.pop_back();
			q.push_back(j);
		}
	}	
	cout<<dp[n][K]+K*K*(e-a[n].x);
	return 0;
}
2023/9/15 12:53
加载中...