QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#578623#5667. Meeting PlacesCelestialCoder#TL 667ms254104kbC++202.9kb2024-09-20 20:30:002024-09-20 20:30:01

Judging History

你现在查看的是最新测评结果

  • [2024-09-20 20:30:01]
  • 评测
  • 测评结果:TL
  • 用时:667ms
  • 内存:254104kb
  • [2024-09-20 20:30:00]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
typedef long double ld;
typedef long long ll;

const ll pr = 233811181;
const ll mod = (1ll<<31)-1;

struct Point {
    ld x, y;
    Point operator-(const Point& r)const {return Point{x-r.x, y-r.y};}
    ld operator*(const Point& r) const {return x*r.x+y*r.y;}
    ld operator^(const Point& r) const {return x*r.y-y*r.x;}
};

struct Circle{Point p; ld r;};

ld dst(Point a, Point b){
    return sqrt((a-b)*(a-b));
}

const int MAX_N = 2000 + 1;

ld dp[MAX_N][MAX_N];
ld cost[MAX_N][MAX_N];
Point pp[MAX_N][MAX_N];
int ss[MAX_N][MAX_N];

Point getCenter(Point a, Point b){ return {(a.x+b.x)/2, (a.y+b.y)/2};}
Point getCenter(Point a, Point b, Point c){
    Point aa = b - a, bb = c - a;
    auto c1 = aa*aa * 0.5, c2 = bb*bb *0.5;
    auto d = aa ^ bb;
    auto x = a.x + (c1 * bb.y - c2 * aa.y) / d;
    auto y = a.y + (c2 * aa.x - c1 * bb.x) / d;
    return {x, y};
}
Circle solve(vector<Point> v, int s){
    Point p = {0, 0};
    ld r = 0;
    int n = v.size();
    for(int i=0; i<n; i++) {
        if (dst(p, v[i]) > r) {
            p = v[i];
            r = 0;
            for(int j=0; j<i; j++) {
                if(dst(p, v[j]) > r) {
                    p = getCenter(v[i], v[j]);
                    r = dst(p, v[i]);
                    for(int k=0; k<j; k++) {
                        if(dst(p, v[k]) > r){
                            p = getCenter(v[i], v[j], v[k]);
                            r = dst(v[k], p);
                        }
                    }
                }
            }
        }
        pp[s][s+i] = p;
        cost[s][s+i] = r;
    }
    return {p, r};
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int N, K, X;
    cin >> N >> K >> X;
    vector <Point> input(N);
    ll seed = X;
    input[0].x = X;
    input[0].y = seed = (seed*pr+1) % mod;
    for(int i=1;i<N;i++){
        input[i].x = seed = (seed*pr+1) % mod;
        input[i].y = seed = (seed*pr+1) % mod;
    }

    for (int s=0; s<N; ++s) {
        vector<Point> v(input.begin()+s, input.end());
        solve(v, s);
    }

    for (int n=0; n<N; ++n) {
        dp[n][1] = cost[0][n];
        for (int k=2; k<=min(K, n+1); ++k) { 
            if (k != n+1 && dst(pp[ss[n-1][k]][n-1], input[n]) < cost[ss[n-1][k]][n-1]) {
                // cout << n << ' ' << k << ", " << ss[n-1][k] << ' ' << cost[ss[n-1][k]][n-1] << endl;
                dp[n][k] = dp[n-1][k];
                ss[n][k] = ss[n-1][k];
            } else {
                dp[n][k] = 1e18;
                for (int t=k-2; t<n; ++t) {
                    dp[n][k] = min(dp[n][k], dp[t][k-1] + cost[t+1][n]);
                    ss[n][k] = t+1;
                }
            }
            // cout << n << ' ' << k << ' ' << dp[n][k] << endl;
        }
    }
    cout << fixed << setprecision(12);
    cout << dp[N-1][K];
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 24720kb

input:

100 23 213

output:

1319350480.800732538686

result:

ok found '1319350480.8007326', expected '1319350480.8007326', error '0.0000000'

Test #2:

score: 0
Accepted
time: 2ms
memory: 9972kb

input:

10 1 1060

output:

1042753143.345167686581

result:

ok found '1042753143.3451676', expected '1042753143.3451676', error '0.0000000'

Test #3:

score: 0
Accepted
time: 1ms
memory: 9996kb

input:

10 10 2373

output:

0.000000000000

result:

ok found '0.0000000', expected '0.0000000', error '-0.0000000'

Test #4:

score: 0
Accepted
time: 2ms
memory: 12276kb

input:

10 2 3396

output:

1236610536.946923031239

result:

ok found '1236610536.9469230', expected '1236610536.9469230', error '0.0000000'

Test #5:

score: 0
Accepted
time: 0ms
memory: 9932kb

input:

10 3 1998

output:

973790809.822444227524

result:

ok found '973790809.8224442', expected '973790809.8224442', error '0.0000000'

Test #6:

score: 0
Accepted
time: 0ms
memory: 12036kb

input:

10 4 562

output:

910867389.906932937622

result:

ok found '910867389.9069330', expected '910867389.9069330', error '0.0000000'

Test #7:

score: 0
Accepted
time: 2ms
memory: 9992kb

input:

10 5 6048

output:

818240814.710514981940

result:

ok found '818240814.7105150', expected '818240814.7105150', error '0.0000000'

Test #8:

score: 0
Accepted
time: 0ms
memory: 12044kb

input:

10 6 2524

output:

500106979.346776274382

result:

ok found '500106979.3467762', expected '500106979.3467762', error '0.0000000'

Test #9:

score: 0
Accepted
time: 1ms
memory: 12040kb

input:

10 7 5415

output:

559478971.432005886687

result:

ok found '559478971.4320059', expected '559478971.4320059', error '0.0000000'

Test #10:

score: 0
Accepted
time: 1ms
memory: 9992kb

input:

10 8 1438

output:

500309745.462769993639

result:

ok found '500309745.4627700', expected '500309745.4627700', error '0.0000000'

Test #11:

score: 0
Accepted
time: 1ms
memory: 12264kb

input:

10 9 3172

output:

162279748.875345173947

result:

ok found '162279748.8753452', expected '162279748.8753452', error '0.0000000'

Test #12:

score: 0
Accepted
time: 0ms
memory: 22500kb

input:

100 1 8316

output:

1320052902.152290252736

result:

ok found '1320052902.1522903', expected '1320052902.1522903', error '0.0000000'

Test #13:

score: 0
Accepted
time: 0ms
memory: 24964kb

input:

100 100 4179

output:

0.000000000000

result:

ok found '0.0000000', expected '0.0000000', error '-0.0000000'

Test #14:

score: 0
Accepted
time: 0ms
memory: 24600kb

input:

100 12 3405

output:

1329687126.130454878556

result:

ok found '1329687126.1304548', expected '1329687126.1304548', error '0.0000000'

Test #15:

score: 0
Accepted
time: 4ms
memory: 22680kb

input:

100 16 8378

output:

1338056514.484269471723

result:

ok found '1338056514.4842694', expected '1338056514.4842694', error '0.0000000'

Test #16:

score: 0
Accepted
time: 0ms
memory: 24508kb

input:

100 2 1858

output:

1310392496.143058079178

result:

ok found '1310392496.1430581', expected '1310392496.1430581', error '0.0000000'

Test #17:

score: 0
Accepted
time: 0ms
memory: 22676kb

input:

100 25 4596

output:

1440464106.622929672012

result:

ok found '1440464106.6229296', expected '1440464106.6229298', error '0.0000000'

Test #18:

score: 0
Accepted
time: 0ms
memory: 24704kb

input:

100 3 5633

output:

1399621082.614273683401

result:

ok found '1399621082.6142738', expected '1399621082.6142738', error '0.0000000'

Test #19:

score: 0
Accepted
time: 0ms
memory: 22716kb

input:

100 32 7827

output:

1342073760.532232963713

result:

ok found '1342073760.5322330', expected '1342073760.5322330', error '0.0000000'

Test #20:

score: 0
Accepted
time: 0ms
memory: 22668kb

input:

100 4 3693

output:

1339808706.709868879057

result:

ok found '1339808706.7098689', expected '1339808706.7098689', error '0.0000000'

Test #21:

score: 0
Accepted
time: 4ms
memory: 24492kb

input:

100 5 2252

output:

1394874243.505704202340

result:

ok found '1394874243.5057042', expected '1394874243.5057042', error '0.0000000'

Test #22:

score: 0
Accepted
time: 0ms
memory: 22680kb

input:

100 50 4254

output:

1322809748.405283543980

result:

ok found '1322809748.4052835', expected '1322809748.4052832', error '0.0000000'

Test #23:

score: 0
Accepted
time: 2ms
memory: 22688kb

input:

100 6 53

output:

1364441356.170098817209

result:

ok found '1364441356.1700988', expected '1364441356.1700988', error '0.0000000'

Test #24:

score: 0
Accepted
time: 0ms
memory: 22616kb

input:

100 64 4337

output:

1180754550.242283903877

result:

ok found '1180754550.2422838', expected '1180754550.2422838', error '0.0000000'

Test #25:

score: 0
Accepted
time: 0ms
memory: 22548kb

input:

100 7 5366

output:

1423557626.358679703437

result:

ok found '1423557626.3586798', expected '1423557626.3586798', error '0.0000000'

Test #26:

score: 0
Accepted
time: 0ms
memory: 24592kb

input:

100 8 8509

output:

1353289305.351995564648

result:

ok found '1353289305.3519955', expected '1353289305.3519957', error '0.0000000'

Test #27:

score: 0
Accepted
time: 0ms
memory: 22672kb

input:

100 9 1423

output:

1228887266.566166959354

result:

ok found '1228887266.5661669', expected '1228887266.5661671', error '0.0000000'

Test #28:

score: 0
Accepted
time: 5ms
memory: 22732kb

input:

100 91 4806

output:

656574218.508675504534

result:

ok found '656574218.5086755', expected '656574218.5086756', error '0.0000000'

Test #29:

score: 0
Accepted
time: 2ms
memory: 22704kb

input:

100 92 4024

output:

794693428.616224033816

result:

ok found '794693428.6162241', expected '794693428.6162238', error '0.0000000'

Test #30:

score: 0
Accepted
time: 4ms
memory: 22824kb

input:

100 93 606

output:

677641787.486312211491

result:

ok found '677641787.4863123', expected '677641787.4863122', error '0.0000000'

Test #31:

score: 0
Accepted
time: 0ms
memory: 22692kb

input:

100 94 7265

output:

686423239.262602770352

result:

ok found '686423239.2626028', expected '686423239.2626028', error '0.0000000'

Test #32:

score: 0
Accepted
time: 0ms
memory: 22684kb

input:

100 95 8469

output:

328187125.923595068714

result:

ok found '328187125.9235951', expected '328187125.9235951', error '0.0000000'

Test #33:

score: 0
Accepted
time: 0ms
memory: 24620kb

input:

100 96 1079

output:

492964787.625908539194

result:

ok found '492964787.6259086', expected '492964787.6259086', error '0.0000000'

Test #34:

score: 0
Accepted
time: 0ms
memory: 24648kb

input:

100 97 5453

output:

258652807.790656469806

result:

ok found '258652807.7906565', expected '258652807.7906564', error '0.0000000'

Test #35:

score: 0
Accepted
time: 0ms
memory: 22692kb

input:

100 98 1778

output:

159490192.118890693251

result:

ok found '159490192.1188907', expected '159490192.1188908', error '0.0000000'

Test #36:

score: 0
Accepted
time: 2ms
memory: 24564kb

input:

100 99 1825

output:

33793756.328998042445

result:

ok found '33793756.3289980', expected '33793756.3289980', error '0.0000000'

Test #37:

score: 0
Accepted
time: 11ms
memory: 134972kb

input:

1000 1 2453

output:

1486878333.285857413197

result:

ok found '1486878333.2858574', expected '1486878333.2858574', error '0.0000000'

Test #38:

score: 0
Accepted
time: 647ms
memory: 143700kb

input:

1000 1000 1798

output:

0.000000000000

result:

ok found '0.0000000', expected '0.0000000', error '-0.0000000'

Test #39:

score: 0
Accepted
time: 223ms
memory: 141368kb

input:

1000 125 43

output:

1474031969.517423305195

result:

ok found '1474031969.5174234', expected '1474031969.5174232', error '0.0000000'

Test #40:

score: 0
Accepted
time: 234ms
memory: 143620kb

input:

1000 128 8107

output:

1440374614.939197620726

result:

ok found '1440374614.9391975', expected '1440374614.9391975', error '0.0000000'

Test #41:

score: 0
Accepted
time: 57ms
memory: 143628kb

input:

1000 15 6639

output:

1491336935.553624947090

result:

ok found '1491336935.5536249', expected '1491336935.5536251', error '0.0000000'

Test #42:

score: 0
Accepted
time: 43ms
memory: 141432kb

input:

1000 16 1251

output:

1445211807.116096374812

result:

ok found '1445211807.1160963', expected '1445211807.1160963', error '0.0000000'

Test #43:

score: 0
Accepted
time: 24ms
memory: 144060kb

input:

1000 2 1303

output:

1468989868.648602263187

result:

ok found '1468989868.6486022', expected '1468989868.6486022', error '0.0000000'

Test #44:

score: 0
Accepted
time: 379ms
memory: 144208kb

input:

1000 250 4457

output:

1487674970.766015955945

result:

ok found '1487674970.7660160', expected '1487674970.7660158', error '0.0000000'

Test #45:

score: 0
Accepted
time: 374ms
memory: 143728kb

input:

1000 256 4135

output:

1474218271.514077227563

result:

ok found '1474218271.5140772', expected '1474218271.5140772', error '0.0000000'

Test #46:

score: 0
Accepted
time: 20ms
memory: 141336kb

input:

1000 3 713

output:

1482496228.990477660089

result:

ok found '1482496228.9904776', expected '1482496228.9904778', error '0.0000000'

Test #47:

score: 0
Accepted
time: 77ms
memory: 143172kb

input:

1000 31 8139

output:

1494361943.479919489240

result:

ok found '1494361943.4799194', expected '1494361943.4799194', error '0.0000000'

Test #48:

score: 0
Accepted
time: 71ms
memory: 144308kb

input:

1000 32 7916

output:

1499333171.093864779687

result:

ok found '1499333171.0938647', expected '1499333171.0938647', error '0.0000000'

Test #49:

score: 0
Accepted
time: 24ms
memory: 143676kb

input:

1000 4 2432

output:

1455826569.039410223486

result:

ok found '1455826569.0394101', expected '1455826569.0394101', error '0.0000000'

Test #50:

score: 0
Accepted
time: 28ms
memory: 141284kb

input:

1000 5 2457

output:

1452189628.196714064572

result:

ok found '1452189628.1967142', expected '1452189628.1967139', error '0.0000000'

Test #51:

score: 0
Accepted
time: 575ms
memory: 141596kb

input:

1000 500 8734

output:

1432279300.566278453683

result:

ok found '1432279300.5662785', expected '1432279300.5662787', error '0.0000000'

Test #52:

score: 0
Accepted
time: 569ms
memory: 143744kb

input:

1000 512 1866

output:

1446804508.035186520778

result:

ok found '1446804508.0351865', expected '1446804508.0351865', error '0.0000000'

Test #53:

score: 0
Accepted
time: 25ms
memory: 144088kb

input:

1000 6 1580

output:

1490178756.856603475055

result:

ok found '1490178756.8566034', expected '1490178756.8566034', error '0.0000000'

Test #54:

score: 0
Accepted
time: 139ms
memory: 146248kb

input:

1000 62 3047

output:

1482100829.646710895235

result:

ok found '1482100829.6467109', expected '1482100829.6467109', error '0.0000000'

Test #55:

score: 0
Accepted
time: 116ms
memory: 141280kb

input:

1000 64 4836

output:

1441850815.855361351511

result:

ok found '1441850815.8553615', expected '1441850815.8553615', error '0.0000000'

Test #56:

score: 0
Accepted
time: 39ms
memory: 141324kb

input:

1000 7 5269

output:

1473104490.728798354161

result:

ok found '1473104490.7287984', expected '1473104490.7287984', error '0.0000000'

Test #57:

score: 0
Accepted
time: 24ms
memory: 143120kb

input:

1000 8 2649

output:

1459133296.606623450643

result:

ok found '1459133296.6066234', expected '1459133296.6066234', error '0.0000000'

Test #58:

score: 0
Accepted
time: 40ms
memory: 141872kb

input:

1000 9 3999

output:

1482914523.380703903618

result:

ok found '1482914523.3807039', expected '1482914523.3807039', error '0.0000000'

Test #59:

score: 0
Accepted
time: 654ms
memory: 141356kb

input:

1000 991 3610

output:

295501032.478087428870

result:

ok found '295501032.4780874', expected '295501032.4780874', error '0.0000000'

Test #60:

score: 0
Accepted
time: 654ms
memory: 143360kb

input:

1000 992 3030

output:

337274092.654038187873

result:

ok found '337274092.6540382', expected '337274092.6540381', error '0.0000000'

Test #61:

score: 0
Accepted
time: 644ms
memory: 141560kb

input:

1000 993 6980

output:

222375113.105798610719

result:

ok found '222375113.1057986', expected '222375113.1057986', error '0.0000000'

Test #62:

score: 0
Accepted
time: 648ms
memory: 143852kb

input:

1000 994 7222

output:

218007091.693304088083

result:

ok found '218007091.6933041', expected '218007091.6933041', error '0.0000000'

Test #63:

score: 0
Accepted
time: 665ms
memory: 143696kb

input:

1000 995 1323

output:

169577520.223652874527

result:

ok found '169577520.2236529', expected '169577520.2236529', error '0.0000000'

Test #64:

score: 0
Accepted
time: 646ms
memory: 143324kb

input:

1000 996 2761

output:

135524743.911448715124

result:

ok found '135524743.9114487', expected '135524743.9114488', error '0.0000000'

Test #65:

score: 0
Accepted
time: 667ms
memory: 141580kb

input:

1000 997 4946

output:

87043806.422792088611

result:

ok found '87043806.4227921', expected '87043806.4227921', error '0.0000000'

Test #66:

score: 0
Accepted
time: 663ms
memory: 146144kb

input:

1000 998 842

output:

24094936.551191687944

result:

ok found '24094936.5511917', expected '24094936.5511917', error '0.0000000'

Test #67:

score: 0
Accepted
time: 650ms
memory: 141968kb

input:

1000 999 5078

output:

4597519.064655034141

result:

ok found '4597519.0646550', expected '4597519.0646550', error '0.0000000'

Test #68:

score: 0
Accepted
time: 68ms
memory: 254104kb

input:

2000 1 2633

output:

1502350354.499526989530

result:

ok found '1502350354.4995270', expected '1502350354.4995270', error '0.0000000'

Test #69:

score: -100
Time Limit Exceeded

input:

2000 1000 6248

output:


result: