QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#739841#5667. Meeting PlacesGU_777TL 1892ms65928kbC++235.9kb2024-11-12 23:24:102024-11-12 23:24:11

Judging History

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

  • [2024-11-12 23:24:11]
  • 评测
  • 测评结果:TL
  • 用时:1892ms
  • 内存:65928kb
  • [2024-11-12 23:24:10]
  • 提交

answer

#include <bits/stdc++.h>
// #pragma GCC optimize(1,2,3,"Ofast","inline")
// #pragma GCC optimize("O3,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
#define int i64
#define FF first
#define SS second
#define SZ(x) ((i32)(x).size())
#define PB push_back
#define EB emplace_back
#define all(x) (x).begin(), (x).end()
using i128 = __int128_t;
using ui64 = uint64_t;
using i64 = int64_t;
using ui32 = uint32_t;
using i32 = int32_t;
using ld = long double;
using P32 = pair<i32, i32>;
using P64 = pair<i64, i64>;
const i64 INF = 1e18;
const ld eps = 1e-8L;

// mt19937_64 mt(chrono::steady_clock::now().time_since_epoch().count());
// i64 randint(i64 l, i64 r) { uniform_int_distribution<> dis(l, r); return dis(mt); }
// double randld(i64 l, i64 r) { uniform_real_distribution<> dis(l, r); return dis(mt); }

void debug() {}
template<class T> void debug(T var) { cerr << var; }
template<class T, class ...P> void debug(T var, P ...t) { cerr << var << ", "; debug(t...); }
template<class T> void org(T l, T r) { while(l != r) cerr << *l++ << ' '; }
#define de(...) { cerr << "[Line: " << __LINE__ << "][" << #__VA_ARGS__ << "] -> [", debug(__VA_ARGS__), cerr << "]\n"; }
#define orange(...) { cerr << "[Line: " << __LINE__ << "][" << #__VA_ARGS__ << "] -> [", org(__VA_ARGS__), cerr << "]\n"; }

const size_t msize = 200000;
char buf[msize], *p1 = buf, *p2 = buf;
char obuf[msize], *p3 = obuf;
#define getc() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, msize, stdin), p1 == p2) ? EOF : *p1++)
#define putac(x) (p3 - obuf < msize) ? (*p3 ++ = x) :(fwrite(obuf, p3 - obuf, 1, stdout), p3 = obuf, *p3 ++ = x)
template<class T> inline void read(T &x) {
    x = 0;
    i32 f = 1;
    char ch = getc();
    for (; ch < 48 || ch > 57; ch = getc()) if (ch == '-') f = -1;
    for (; ch >= 48 && ch <= 57; ch = getc()) x = (x << 3) + (x << 1) + (ch ^ 0x30);
    x = x * f;
}
template<class T> void write(const T &x) {
    static int32_t c[40];
    if (!x) { putac('0'); return; }
    i32 len = 0;
    T k1 = x;
    if (k1 < 0) k1 = -k1, putac('-');
    while (k1) c[len++] = k1 % 10 ^ 48, k1 /= 10;
    while (len--) putac(c[len]);
}
template<typename T, typename... Args>
inline void read(T &x, Args&... args) {
    read(x);  // 讀取第一個變數
    (read(args), ...); // 展開剩餘變數的讀取
}
void OUO();
i32 main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cout << fixed << setprecision(10);
    i32 t = 1;
    // t = read<i32>();
    for (i32 tt = 0; tt < t; tt++){
        OUO();
    }
    fwrite(obuf, p3 - obuf, 1, stdout);
}
const int mod = 2147483647;

template<class T>
struct pt{
	T x,y;
	pt(T _x,T _y):x(_x),y(_y){}
	pt():x(0),y(0){}
	
	pt operator * (T  c){ return pt(x*c,y*c);}
	pt operator / (T  c){ return pt(x/c,y/c);}
	pt operator + (pt a) const { return pt(x+a.x,y+a.y);}
	pt operator - (pt a) const { return pt(x-a.x,y-a.y);}
	T  operator * (pt a){ return x*a.x + y*a.y;}
	T  operator ^ (pt a){ return x*a.y - y*a.x;}

	auto operator<=>(pt o) const { return (x != o.x) ? x <=> o.x : y <=> o.y; } // c++20
	bool operator < (pt a) const { return x < a.x || (x == a.x && y < a.y);};
	bool operator== (pt a) const { return x == a.x and y == a.y;};
	friend T ori(pt a, pt b, pt c) { return (b - a) ^ (c - a); }
	friend T abs2(pt a) { return abs(a * a); }
};
using Pt = pt<ld>;
int sgn(ld x) { return (x > -eps) - (x < eps); } // dcmp == sgn
ld abs(Pt a) { return sqrt(abs2(a)); }
Pt rotate(Pt u) { // pi / 2
    return {-u.y, u.x};
}
struct Line { 
    Pt a, b;
    Pt dir() const { return b - a; }
};
Pt LineInter(Line l, Line m) {
    ld s = ori(m.a, m.b, l.a), t = ori(m.a, m.b, l.b);
    return (l.b * s - l.a * t) / (s - t);
}
Pt Center(Pt a, Pt b, Pt c) {
    Pt x = (a + b) / 2;
    Pt y = (b + c) / 2;
    return LineInter({x, x + rotate(b - a)}, {y, y + rotate(c - b)});
}
struct Cir { 
    Pt o;
    ld r; 
    bool inside(const Pt &a) {
        // abs(a - o) <= r
        return sgn(abs(a - o) - r) <= 0;
    }
};
ld ww[2005][2005], dp[2005];
vector<int> have[2005];
Cir MEC(vector<Pt> P, int start) {
    have[start + 1].PB(0);
    Cir C = {P[0], 0.0L};
    for (int i = 0; i < P.size(); i++) {
        ww[start + 1][i + start + 1] = C.r;
        if (C.inside(P[i])) continue;
        have[i + start + 1].PB(start + 1);
        C = {P[i], 0};
        for (int j = 0; j < i; j++) {
            if (C.inside(P[j])) continue;
            C = {(P[i] + P[j]) / 2, abs(P[i] - P[j]) / 2};
            for (int k = 0; k < j; k++) {
                if (C.inside(P[k])) continue;
                C.o = Center(P[i], P[j], P[k]);
                C.r = abs(C.o - P[i]);
            }
        }
        ww[start + 1][i + start + 1] = C.r;
    }
    return C;
}
ostream &operator<<(ostream &s, const Pt &a) { return s << a.x << ' ' << a.y << '\n'; }

int calc(int x) {
    return (x * 233811181) % mod + 1 % mod;
}

void OUO() {
    int n, k, x; read(n, k, x);
    vector<P64> vec(n);
    vec[0] = P64(x, calc(x));
    for (i32 i = 1; i < n; i++) {
        vec[i].FF = calc(vec[i - 1].SS);
        vec[i].SS = calc(vec[i].FF);
    }

    vector<Pt> pts(n);
    for (i32 i = 0; i < n; i++) 
        pts[i] = Pt(vec[i].FF, vec[i].SS);
    
    // MEC(pts, 0);
    for (i32 i = 0; i < n; i++) {
        vector<Pt> tmp(pts.begin() + i, pts.end());
        if (tmp.size()) MEC(tmp, i);
    }
    

    for (i32 j = 1; j < 2005; j++) dp[j] = 1e100L;

    for (i32 i = 1; i <= k; i++) {
        for (i32 j = n; j >= 1; j--) {
            // for (i32 l : have[j]) dp[j] = min(dp[j], dp[l] + ww[l + 1][j]);
            for (i32 l = 0; l < j; l++) dp[j] = min(dp[j], dp[l] + ww[l + 1][j]);
        }
    }
    cout << dp[n];

    // for (i32 j = n; j >= 1; j--) cout << have[j].size() << '\n';

    // for (i32 i = 1; i <= n; i++)
    //     for (i32 j = i; j <= n; j++) cout << ww[i][j] << ' ';
}
// https://vjudge.net/problem/QOJ-5667

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

100 23 213

output:

1319350480.8007325387

result:

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

Test #2:

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

input:

10 1 1060

output:

1042753143.3451676866

result:

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

Test #3:

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

input:

10 10 2373

output:

0.0000000000

result:

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

Test #4:

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

input:

10 2 3396

output:

1236610536.9469230312

result:

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

Test #5:

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

input:

10 3 1998

output:

973790809.8224442275

result:

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

Test #6:

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

input:

10 4 562

output:

910867389.9069329376

result:

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

Test #7:

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

input:

10 5 6048

output:

818240814.7105149821

result:

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

Test #8:

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

input:

10 6 2524

output:

500106979.3467762744

result:

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

Test #9:

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

input:

10 7 5415

output:

559478971.4320058867

result:

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

Test #10:

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

input:

10 8 1438

output:

500309745.4627699936

result:

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

Test #11:

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

input:

10 9 3172

output:

162279748.8753451739

result:

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

Test #12:

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

input:

100 1 8316

output:

1320052902.1522902527

result:

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

Test #13:

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

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: 8204kb

input:

100 12 3405

output:

1329687126.1304548786

result:

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

Test #15:

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

input:

100 16 8378

output:

1338056514.4842694717

result:

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

Test #16:

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

input:

100 2 1858

output:

1310392496.1430580794

result:

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

Test #17:

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

input:

100 25 4596

output:

1440464106.6229296720

result:

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

Test #18:

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

input:

100 3 5633

output:

1399621082.6142736834

result:

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

Test #19:

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

input:

100 32 7827

output:

1342073760.5322329638

result:

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

Test #20:

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

input:

100 4 3693

output:

1339808706.7098688792

result:

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

Test #21:

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

input:

100 5 2252

output:

1394874243.5057042023

result:

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

Test #22:

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

input:

100 50 4254

output:

1322809748.4052835440

result:

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

Test #23:

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

input:

100 6 53

output:

1364441356.1700988172

result:

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

Test #24:

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

input:

100 64 4337

output:

1180754550.2422839040

result:

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

Test #25:

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

input:

100 7 5366

output:

1423557626.3586797034

result:

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

Test #26:

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

input:

100 8 8509

output:

1353289305.3519955645

result:

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

Test #27:

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

input:

100 9 1423

output:

1228887266.5661669594

result:

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

Test #28:

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

input:

100 91 4806

output:

656574218.5086755045

result:

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

Test #29:

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

input:

100 92 4024

output:

794693428.6162240337

result:

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

Test #30:

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

input:

100 93 606

output:

677641787.4863122115

result:

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

Test #31:

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

input:

100 94 7265

output:

686423239.2626027704

result:

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

Test #32:

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

input:

100 95 8469

output:

328187125.9235950687

result:

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

Test #33:

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

input:

100 96 1079

output:

492964787.6259085393

result:

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

Test #34:

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

input:

100 97 5453

output:

258652807.7906564699

result:

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

Test #35:

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

input:

100 98 1778

output:

159490192.1188906933

result:

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

Test #36:

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

input:

100 99 1825

output:

33793756.3289980424

result:

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

Test #37:

score: 0
Accepted
time: 29ms
memory: 37368kb

input:

1000 1 2453

output:

1486878333.2858574132

result:

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

Test #38:

score: 0
Accepted
time: 1820ms
memory: 37184kb

input:

1000 1000 1798

output:

0.0000000000

result:

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

Test #39:

score: 0
Accepted
time: 247ms
memory: 37264kb

input:

1000 125 43

output:

1474031969.5174233053

result:

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

Test #40:

score: 0
Accepted
time: 269ms
memory: 35432kb

input:

1000 128 8107

output:

1440374614.9391976207

result:

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

Test #41:

score: 0
Accepted
time: 78ms
memory: 35296kb

input:

1000 15 6639

output:

1491336935.5536249472

result:

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

Test #42:

score: 0
Accepted
time: 70ms
memory: 35680kb

input:

1000 16 1251

output:

1445211807.1160963748

result:

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

Test #43:

score: 0
Accepted
time: 46ms
memory: 37204kb

input:

1000 2 1303

output:

1468989868.6486022632

result:

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

Test #44:

score: 0
Accepted
time: 471ms
memory: 36016kb

input:

1000 250 4457

output:

1487674970.7660159559

result:

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

Test #45:

score: 0
Accepted
time: 492ms
memory: 35476kb

input:

1000 256 4135

output:

1474218271.5140772276

result:

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

Test #46:

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

input:

1000 3 713

output:

1482496228.9904776600

result:

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

Test #47:

score: 0
Accepted
time: 89ms
memory: 36056kb

input:

1000 31 8139

output:

1494361943.4799194892

result:

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

Test #48:

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

input:

1000 32 7916

output:

1499333171.0938647797

result:

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

Test #49:

score: 0
Accepted
time: 31ms
memory: 35984kb

input:

1000 4 2432

output:

1455826569.0394102233

result:

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

Test #50:

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

input:

1000 5 2457

output:

1452189628.1967140646

result:

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

Test #51:

score: 0
Accepted
time: 939ms
memory: 37112kb

input:

1000 500 8734

output:

1432279300.5662784536

result:

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

Test #52:

score: 0
Accepted
time: 966ms
memory: 37268kb

input:

1000 512 1866

output:

1446804508.0351865208

result:

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

Test #53:

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

input:

1000 6 1580

output:

1490178756.8566034751

result:

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

Test #54:

score: 0
Accepted
time: 151ms
memory: 37112kb

input:

1000 62 3047

output:

1482100829.6467108954

result:

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

Test #55:

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

input:

1000 64 4836

output:

1441850815.8553613515

result:

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

Test #56:

score: 0
Accepted
time: 56ms
memory: 37276kb

input:

1000 7 5269

output:

1473104490.7287983543

result:

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

Test #57:

score: 0
Accepted
time: 45ms
memory: 36908kb

input:

1000 8 2649

output:

1459133296.6066234506

result:

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

Test #58:

score: 0
Accepted
time: 50ms
memory: 37928kb

input:

1000 9 3999

output:

1482914523.3807039035

result:

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

Test #59:

score: 0
Accepted
time: 1844ms
memory: 35740kb

input:

1000 991 3610

output:

295501032.4780874289

result:

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

Test #60:

score: 0
Accepted
time: 1878ms
memory: 35528kb

input:

1000 992 3030

output:

337274092.6540381879

result:

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

Test #61:

score: 0
Accepted
time: 1871ms
memory: 35608kb

input:

1000 993 6980

output:

222375113.1057986107

result:

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

Test #62:

score: 0
Accepted
time: 1868ms
memory: 37092kb

input:

1000 994 7222

output:

218007091.6933040881

result:

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

Test #63:

score: 0
Accepted
time: 1862ms
memory: 37096kb

input:

1000 995 1323

output:

169577520.2236528745

result:

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

Test #64:

score: 0
Accepted
time: 1867ms
memory: 37148kb

input:

1000 996 2761

output:

135524743.9114487152

result:

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

Test #65:

score: 0
Accepted
time: 1887ms
memory: 35444kb

input:

1000 997 4946

output:

87043806.4227920886

result:

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

Test #66:

score: 0
Accepted
time: 1887ms
memory: 35352kb

input:

1000 998 842

output:

24094936.5511916879

result:

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

Test #67:

score: 0
Accepted
time: 1892ms
memory: 37284kb

input:

1000 999 5078

output:

4597519.0646550341

result:

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

Test #68:

score: 0
Accepted
time: 103ms
memory: 65928kb

input:

2000 1 2633

output:

1502350354.4995269895

result:

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

Test #69:

score: -100
Time Limit Exceeded

input:

2000 1000 6248

output:


result: