救救孩子
查看原帖
救救孩子
209091
Owen05楼主2020/9/26 17:39

Rt,该代码在其它OJ测试通过,在洛谷就全部RE,相似的代码可过 P3195玩具装箱

#include <bits/stdc++.h>
using namespace std;
long long n, s;
long long sumT[30100], sumC[30100];
long long f[30100];
deque <long long> d;
inline long long x(long long j)
{
	return sumC[j];
}
inline long long y(long long j)
{
	return f[j];
}
inline double k(long long j1,long long j2)
{
	return (y(j2)-y(j1))/(x(j2)-x(j1));
}
int main()
{
	cin >> n >> s;
	for( long long i=1; i<=n; i++ ) {
		cin >> sumT[i] >> sumC[i];
		sumT[i]+=sumT[i-1];
		sumC[i]+=sumC[i-1];
	}
	d.clear();
	d.push_back(0);
	for( long long i=1; i<=n; i++ ) {
		while( d.size()>=2 && k(d[0],d[1]) < sumT[i]+s )
			d.pop_front();
		f[i]=f[d[0]]+sumT[i]*(sumC[i]-sumC[d[0]])+s*(sumC[n]-sumC[d[0]]);
		while( d.size()>=2 && k(d[d.size()-2],d[d.size()-1]) > k(d[d.size()-1],i) )
			d.pop_back();
		d.push_back(i);
	}
	cout << f[n] << endl;
	return 0;
}
2020/9/26 17:39
加载中...