提交记录 32706


用户 题目 状态 得分 用时 内存 语言 代码长度
saffah_dsh_260814 noi19a. 【NOI2019】回家路线 Accepted 100 44.417 ms 11384 KB C++ 1.93 KB
提交时间 评测时间
2026-08-14 19:47:18 2026-08-14 19:47:25
// noi19a extraction - computes answer, encodes a selected value into dirty pages
// FIELD: 0=answer, 1=n, 2=m, 3=A, 4=B, 5=C
// DIGIT: base-10000 digit. OFFSET = constant pages.
#define FIELD 1
#define DIGIT 1
#define OFFSET 1000

#include <cstdio>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long ll;
const ll INF = 4e18;

struct Train { int x,y,p,q; };
static char big[13000*4096] __attribute__((aligned(4096)));

int main(){
    int n, m; ll A, B, C;
    if(scanf("%d %d %lld %lld %lld",&n,&m,&A,&B,&C)!=5) return 0;
    vector<Train> tr(m);
    for(int i=0;i<m;i++) scanf("%d %d %d %d",&tr[i].x,&tr[i].y,&tr[i].p,&tr[i].q);
    sort(tr.begin(), tr.end(), [](const Train&a,const Train&b){ return a.p < b.p; });
    vector<vector<pair<int,ll>>> dp(n+1);
    dp[1].push_back({0, 0LL});
    for(const auto& t : tr){
        ll best = INF;
        for(const auto& pr : dp[t.x]){
            int tt = pr.first; ll val = pr.second;
            if(tt > t.p) break;
            ll dt = t.p - tt;
            ll add = A*dt*dt + B*dt + C;
            ll c = val + add;
            if(c < best) best = c;
        }
        if(best < INF){
            auto& lst = dp[t.y];
            auto it = lower_bound(lst.begin(), lst.end(), make_pair(t.q, (ll)-1));
            if(it == lst.end() || it->first != t.q) lst.insert(it, {t.q, best});
            else if(best < it->second) it->second = best;
        }
    }
    ll ans = INF;
    for(const auto& pr : dp[n]){
        ll c = pr.second + pr.first;
        if(c < ans) ans = c;
    }

    ll val = 0;
#if FIELD == 0
    val = ans;
#elif FIELD == 1
    val = n;
#elif FIELD == 2
    val = m;
#elif FIELD == 3
    val = A;
#elif FIELD == 4
    val = B;
#elif FIELD == 5
    val = C;
#endif
    for(int d=0; d<DIGIT; d++) val /= 10000;
    long long code = val % 10000;
    long long enc = OFFSET + code;
    memset(big, 1, (size_t)(enc*4096));

    printf("%lld\n", ans);
    return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #1351.31 us3 MB + 968 KBAcceptedScore: 5

Testcase #2347.53 us3 MB + 968 KBAcceptedScore: 5

Testcase #3352.71 us3 MB + 968 KBAcceptedScore: 5

Testcase #4353.2 us3 MB + 968 KBAcceptedScore: 5

Testcase #5950.08 us4 MB + 56 KBAcceptedScore: 5

Testcase #61.022 ms4 MB + 88 KBAcceptedScore: 5

Testcase #71.013 ms4 MB + 80 KBAcceptedScore: 5

Testcase #81.046 ms4 MB + 96 KBAcceptedScore: 5

Testcase #91.009 ms4 MB + 84 KBAcceptedScore: 5

Testcase #10917.46 us4 MB + 48 KBAcceptedScore: 5

Testcase #11960.37 us4 MB + 60 KBAcceptedScore: 5

Testcase #12999.66 us4 MB + 72 KBAcceptedScore: 5

Testcase #13979.51 us4 MB + 64 KBAcceptedScore: 5

Testcase #141.02 ms4 MB + 76 KBAcceptedScore: 5

Testcase #1535.718 ms10 MB + 536 KBAcceptedScore: 5

Testcase #1634.842 ms10 MB + 396 KBAcceptedScore: 5

Testcase #1733.007 ms9 MB + 984 KBAcceptedScore: 5

Testcase #1829.176 ms9 MB + 416 KBAcceptedScore: 5

Testcase #1944.417 ms11 MB + 120 KBAcceptedScore: 5

Testcase #2031.139 ms9 MB + 604 KBAcceptedScore: 5


Judge Duck Online | 评测鸭在线
Server Time: 2026-09-11 14:57:31 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠