QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#85888#5667. Meeting PlacesSpaceJellyfishWA 1065ms26376kbC++173.5kb2023-03-08 20:33:032023-03-08 20:33:04

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-03-08 20:33:04]
  • 评测
  • 测评结果:WA
  • 用时:1065ms
  • 内存:26376kb
  • [2023-03-08 20:33:03]
  • 提交

answer

#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <cfloat>
#define eps 1e-9
using namespace std;
const int N = 2001, T = 5e8;
const int Mod = 2147483647;
const int base = 233811181;
int Read() {
    int x = 0, f = 1;
    char ch = getchar();
    while (!isdigit(ch) && ch != '-')
        ch = getchar();
    if (ch == '-')
        f = -1, ch = getchar();
    while (isdigit(ch))
        x = (x << 3) + (x << 1) + ch - '0', ch = getchar();
    return (f == -1) ? -x : x;
}
int n, k, x[N], y[N];
double r;
struct point {
    double x, y;
} p[N], o;
double sqr(double x) { return x * x; }
double dis(point a, point b) {
    return sqrt(sqr(a.x - b.x) + sqr(a.y - b.y));
}
bool cmp(double a, double b) { return fabs(a - b) < eps; }

double s[N][N];

point geto(point a, point b, point c) {
    double a1, a2, b1, b2, c1, c2;
    point ans;
    a1 = 2 * (b.x - a.x), b1 = 2 * (b.y - a.y),
    c1 = sqr(b.x) - sqr(a.x) + sqr(b.y) - sqr(a.y);
    a2 = 2 * (c.x - a.x), b2 = 2 * (c.y - a.y),
    c2 = sqr(c.x) - sqr(a.x) + sqr(c.y) - sqr(a.y);
    if (cmp(a1, 0)) {
        ans.y = c1 / b1;
        ans.x = (c2 - ans.y * b2) / a2;
    } else if (cmp(b1, 0)) {
        ans.x = c1 / a1;
        ans.y = (c2 - ans.x * a2) / b2;
    } else {
        ans.x = (c2 * b1 - c1 * b2) / (a2 * b1 - a1 * b2);
        ans.y = (c2 * a1 - c1 * a2) / (b2 * a1 - b1 * a2);
    }
    return ans;
}

double dp_before[N], dp_cur[N];

void compute(int l, int r, int optl, int optr) {
  if (l > r) return;
  int mid = (l + r) >> 1;
  pair<double, int> best = {DBL_MAX, -1};
  for (int k = optl; k <= min(mid, optr); k++) {
    best = min(best, {dp_before[k] + s[k + 1][mid], k});
  }
  dp_cur[mid] = best.first;
  int opt = best.second;
  compute(l, mid - 1, optl, opt);
  compute(mid + 1, r, opt, optr);
}

signed main() {
    n = Read(), k = Read(), x[1] = Read();
    y[1] = (1ll * x[1] * base + 1) % Mod;
    p[1].x = x[1];
    p[1].y = y[1];
    for (int i = 2; i <= n; i++) {
        x[i] = (1ll * y[i - 1] * base + 1) % Mod;
        y[i] = (1ll * x[i] * base + 1) % Mod;
        p[i].x = x[i];
        p[i].y = y[i];
    }
    double ans = 0;
    for (int l = n; l > 0; l--) {
        r = 0;
        o = p[l];
        for (int i = l; i <= n; i++) {
            if (dis(o, p[i]) < r || cmp(dis(o, p[i]), r)){
                s[l][i] = r;
                continue;
            }
            o.x = (p[i].x + p[l].x) / 2;
            o.y = (p[i].y + p[l].y) / 2;
            r = dis(p[i], p[l]) / 2;
            for (int j = l + 1; j < i; j++) {
                if (dis(o, p[j]) < r || cmp(dis(o, p[j]), r))
                    continue;
                o.x = (p[i].x + p[j].x) / 2;
                o.y = (p[i].y + p[j].y) / 2;
                r = dis(p[i], p[j]) / 2;
                for (int k = l; k < j; k++) {
                    if (dis(o, p[k]) < r || cmp(dis(o, p[k]), r))
                        continue;
                    o = geto(p[i], p[j], p[k]);
                    r = dis(o, p[i]);
                }
            }
            s[l][i] = r;
        }
    }
    for (int i = 1; i <= n; i++)
        dp_cur[i] = DBL_MAX;
    int t = T / (n * k);
    while (k--) {
        memcpy(dp_before, dp_cur, sizeof(dp_cur));
        compute(1, n, 0, n - 1);
        for (int i = 1; i <= n; i++)
            for (int d = 1; d <= t && i - d >= 0; d++)
                dp_cur[i] = min(dp_cur[i], dp_before[i - d] + s[i - d + 1][i]);
    }
    printf("%.10lf", dp_cur[n]);
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

100 23 213

output:

1319350480.8007326126

result:

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

Test #2:

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

input:

10 1 1060

output:

1042753143.3451676369

result:

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

Test #3:

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

input:

10 10 2373

output:

0.0000000000

result:

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

Test #4:

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

input:

10 2 3396

output:

1236610536.9469230175

result:

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

Test #5:

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

input:

10 3 1998

output:

973790809.8224442005

result:

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

Test #6:

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

input:

10 4 562

output:

910867389.9069330692

result:

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

Test #7:

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

input:

10 5 6048

output:

818240814.7105150223

result:

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

Test #8:

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

input:

10 6 2524

output:

500106979.3467763662

result:

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

Test #9:

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

input:

10 7 5415

output:

559478971.4320058823

result:

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

Test #10:

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

input:

10 8 1438

output:

500309745.4627699852

result:

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

Test #11:

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

input:

10 9 3172

output:

162279748.8753451705

result:

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

Test #12:

score: 0
Accepted
time: 3ms
memory: 4120kb

input:

100 1 8316

output:

1320052902.1522903442

result:

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

Test #13:

score: 0
Accepted
time: 3ms
memory: 4172kb

input:

100 100 4179

output:

0.0000000000

result:

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

Test #14:

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

input:

100 12 3405

output:

1329687126.1304550171

result:

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

Test #15:

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

input:

100 16 8378

output:

1338056514.4842693806

result:

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

Test #16:

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

input:

100 2 1858

output:

1310392496.1430580616

result:

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

Test #17:

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

input:

100 25 4596

output:

1440464106.6229298115

result:

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

Test #18:

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

input:

100 3 5633

output:

1399621082.6142737865

result:

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

Test #19:

score: 0
Accepted
time: 3ms
memory: 4124kb

input:

100 32 7827

output:

1342073760.5322329998

result:

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

Test #20:

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

input:

100 4 3693

output:

1339808706.7098686695

result:

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

Test #21:

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

input:

100 5 2252

output:

1394874243.5057041645

result:

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

Test #22:

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

input:

100 50 4254

output:

1322809748.4052836895

result:

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

Test #23:

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

input:

100 6 53

output:

1364441356.1700987816

result:

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

Test #24:

score: 0
Accepted
time: 3ms
memory: 4052kb

input:

100 64 4337

output:

1180754550.2422838211

result:

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

Test #25:

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

input:

100 7 5366

output:

1423557626.3586797714

result:

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

Test #26:

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

input:

100 8 8509

output:

1353289305.3519957066

result:

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

Test #27:

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

input:

100 9 1423

output:

1228887266.5661668777

result:

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

Test #28:

score: 0
Accepted
time: 3ms
memory: 4052kb

input:

100 91 4806

output:

656574218.5086755753

result:

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

Test #29:

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

input:

100 92 4024

output:

794693428.6162240505

result:

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

Test #30:

score: 0
Accepted
time: 3ms
memory: 4248kb

input:

100 93 606

output:

677641787.4863121510

result:

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

Test #31:

score: 0
Accepted
time: 3ms
memory: 4128kb

input:

100 94 7265

output:

686423239.2626028061

result:

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

Test #32:

score: 0
Accepted
time: 3ms
memory: 4176kb

input:

100 95 8469

output:

328187125.9235950708

result:

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

Test #33:

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

input:

100 96 1079

output:

492964787.6259083748

result:

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

Test #34:

score: 0
Accepted
time: 3ms
memory: 4064kb

input:

100 97 5453

output:

258652807.7906568050

result:

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

Test #35:

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

input:

100 98 1778

output:

159490192.1188908219

result:

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

Test #36:

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

input:

100 99 1825

output:

33793756.3289980441

result:

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

Test #37:

score: 0
Accepted
time: 18ms
memory: 11544kb

input:

1000 1 2453

output:

1486878333.2858574390

result:

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

Test #38:

score: 0
Accepted
time: 907ms
memory: 11612kb

input:

1000 1000 1798

output:

0.0000000000

result:

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

Test #39:

score: 0
Accepted
time: 175ms
memory: 11800kb

input:

1000 125 43

output:

1474031969.5174233913

result:

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

Test #40:

score: 0
Accepted
time: 281ms
memory: 11536kb

input:

1000 128 8107

output:

1440374614.9391977787

result:

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

Test #41:

score: 0
Accepted
time: 74ms
memory: 11492kb

input:

1000 15 6639

output:

1491336935.5536248684

result:

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

Test #42:

score: 0
Accepted
time: 73ms
memory: 11616kb

input:

1000 16 1251

output:

1445211807.1160962582

result:

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

Test #43:

score: 0
Accepted
time: 36ms
memory: 11668kb

input:

1000 2 1303

output:

1468989868.6486022472

result:

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

Test #44:

score: 0
Accepted
time: 426ms
memory: 11556kb

input:

1000 250 4457

output:

1487674970.7660160065

result:

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

Test #45:

score: 0
Accepted
time: 507ms
memory: 11592kb

input:

1000 256 4135

output:

1474218271.5140771866

result:

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

Test #46:

score: 0
Accepted
time: 19ms
memory: 11608kb

input:

1000 3 713

output:

1482496228.9904775620

result:

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

Test #47:

score: 0
Accepted
time: 88ms
memory: 11612kb

input:

1000 31 8139

output:

1494361943.4799194336

result:

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

Test #48:

score: 0
Accepted
time: 66ms
memory: 11544kb

input:

1000 32 7916

output:

1499333171.0938646793

result:

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

Test #49:

score: 0
Accepted
time: 34ms
memory: 11484kb

input:

1000 4 2432

output:

1455826569.0394101143

result:

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

Test #50:

score: 0
Accepted
time: 26ms
memory: 11664kb

input:

1000 5 2457

output:

1452189628.1967139244

result:

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

Test #51:

score: 0
Accepted
time: 912ms
memory: 11740kb

input:

1000 500 8734

output:

1432279300.5662786961

result:

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

Test #52:

score: 0
Accepted
time: 935ms
memory: 11556kb

input:

1000 512 1866

output:

1446804508.0351867676

result:

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

Test #53:

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

input:

1000 6 1580

output:

1490178756.8566033840

result:

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

Test #54:

score: 0
Accepted
time: 128ms
memory: 11492kb

input:

1000 62 3047

output:

1482100829.6467111111

result:

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

Test #55:

score: 0
Accepted
time: 153ms
memory: 11556kb

input:

1000 64 4836

output:

1441850815.8553614616

result:

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

Test #56:

score: 0
Accepted
time: 42ms
memory: 11664kb

input:

1000 7 5269

output:

1473104490.7287981510

result:

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

Test #57:

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

input:

1000 8 2649

output:

1459133296.6066234112

result:

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

Test #58:

score: 0
Accepted
time: 38ms
memory: 11608kb

input:

1000 9 3999

output:

1482914523.3807039261

result:

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

Test #59:

score: 0
Accepted
time: 982ms
memory: 11660kb

input:

1000 991 3610

output:

295501032.4780874252

result:

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

Test #60:

score: 0
Accepted
time: 895ms
memory: 11800kb

input:

1000 992 3030

output:

337274092.6540381312

result:

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

Test #61:

score: 0
Accepted
time: 861ms
memory: 11556kb

input:

1000 993 6980

output:

222375113.1057986021

result:

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

Test #62:

score: 0
Accepted
time: 1065ms
memory: 11548kb

input:

1000 994 7222

output:

218007091.6933040917

result:

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

Test #63:

score: 0
Accepted
time: 832ms
memory: 11516kb

input:

1000 995 1323

output:

169577520.2236528993

result:

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

Test #64:

score: 0
Accepted
time: 824ms
memory: 11500kb

input:

1000 996 2761

output:

135524743.9114503860

result:

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

Test #65:

score: 0
Accepted
time: 819ms
memory: 11556kb

input:

1000 997 4946

output:

87043806.4227920771

result:

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

Test #66:

score: 0
Accepted
time: 945ms
memory: 11732kb

input:

1000 998 842

output:

24094936.5511916876

result:

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

Test #67:

score: 0
Accepted
time: 792ms
memory: 11516kb

input:

1000 999 5078

output:

4597519.0646550339

result:

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

Test #68:

score: 0
Accepted
time: 88ms
memory: 26252kb

input:

2000 1 2633

output:

1502350354.4995269775

result:

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

Test #69:

score: 0
Accepted
time: 986ms
memory: 26192kb

input:

2000 1000 6248

output:

1469507093.4042112827

result:

ok found '1469507093.4042113', expected '1469507093.4042110', error '0.0000000'

Test #70:

score: -100
Wrong Answer
time: 842ms
memory: 26376kb

input:

2000 1024 2507

output:

1457342818.7742569447

result:

wrong answer 1st numbers differ - expected: '1448066815.3184788', found: '1457342818.7742569', error = '0.0064058'