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;
}