#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
#define pb push_back
int n,m,A,B,C,ans=2e9;
int p[200010],q[200010],X[200010],Y[200010];
vector<int> c1[1010],c2[1010];
int f[200010],g[200010];
struct Queue{
vector<int> s;
int st,ed;
Queue():st(0),ed(-1){}
bool empty(){return st>ed;}
int front(){return s[st];}
void add(int x){
while(st<ed&& 1ll*(g[s[ed]]-g[s[ed-1]])*(q[x]-q[s[ed]]) >= 1ll*(g[x]-g[s[ed]])*(q[s[ed]]-q[s[ed-1]]))ed--;
if(s.size()-1==ed)s.pb(0);
s[++ed]=x;
}
void del(int x){
while(st<ed&& (g[s[st+1]]-g[s[st]]) < 1ll*x*(q[s[st+1]]-q[s[st]]) )st++;
}
}Q[100010];
int main()
{
scanf("%d %d %d %d %d",&n,&m,&A,&B,&C);
for(int i=1;i<=m;i++){
scanf("%d %d %d %d",&X[i],&Y[i],&p[i],&q[i]);
c1[p[i]].pb(i);
c2[q[i]].pb(i);
}
memset(f,63,sizeof(f));
memset(g,63,sizeof(g));//g也要初始化,别忘了
f[0]=0;g[0]=0;Q[1].add(0);
for(int Ti=0;Ti<=1000;Ti++){
for(int i:c2[Ti]){//注意要先处理c2,即先将点加入队列,下面的c1可能用到
if(Y[i]==n)ans=min(ans,f[i]+q[i]);
else Q[Y[i]].add(i);
}
for(int i:c1[Ti]){
if(!Q[X[i]].empty()){
Q[X[i]].del(2*A*p[i]);
int j=Q[X[i]].front();
f[i]=f[j]+A*(p[i]-q[j])*(p[i]-q[j])+B*(p[i]-q[j])+C;
g[i]=f[i]+A*q[i]*q[i]-B*q[i];
}
}
}
printf("%d",ans);
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 635.39 us | 4 MB + 692 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #2 | 631.77 us | 4 MB + 692 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #3 | 633.94 us | 4 MB + 688 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #4 | 634.69 us | 4 MB + 688 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #5 | 1.475 ms | 4 MB + 844 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #6 | 1.509 ms | 4 MB + 856 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #7 | 1.485 ms | 4 MB + 844 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #8 | 1.506 ms | 4 MB + 852 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #9 | 1.493 ms | 4 MB + 848 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #10 | 1.515 ms | 4 MB + 856 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #11 | 1.511 ms | 4 MB + 852 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #12 | 1.526 ms | 4 MB + 856 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #13 | 1.522 ms | 4 MB + 852 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #14 | 1.516 ms | 4 MB + 852 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #15 | 47.339 ms | 12 MB + 296 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #16 | 48.92 ms | 12 MB + 416 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #17 | 49.471 ms | 12 MB + 292 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #18 | 49.218 ms | 12 MB + 428 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #19 | 47.879 ms | 12 MB + 308 KB | Accepted | Score: 5 | 显示更多 |
| Testcase #20 | 50.57 ms | 12 MB + 428 KB | Accepted | Score: 5 | 显示更多 |