QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#199378 | #6517. Computational Geometry | wsyear | AC ✓ | 495ms | 199444kb | C++17 | 1.5kb | 2023-10-04 10:50:17 | 2023-10-04 10:50:17 |
Judging History
answer
#include <bits/stdc++.h>
#ifdef dbg
#define D(...) fprintf(stderr, __VA_ARGS__)
#define DD(...) D(#__VA_ARGS__ " = "), debug_helper::debug(__VA_ARGS__), D("\n")
#include "C:\Users\wsyear\Desktop\OI\templates\debug.hpp"
#else
#define D(...) ((void)0)
#define DD(...) ((void)0)
#endif
#define rep(i, j, k) for (int i = (j); i <= (k); ++i)
#define per(i, j, k) for (int i = (j); i >= (k); --i)
#define SZ(v) int((v).size())
#define ALL(v) (v).begin(),(v).end()
#define fi first
#define se second
using ll = long long;
using pii = std::pair<int, int>;
using pll = std::pair<ll, ll>;
using namespace std;
const int N = 5010;
int n;
pll a[N];
ll f[N][N];
ll pw(ll x) { return x * x; }
ll dis(pll x, pll y) { return pw(x.fi - y.fi) + pw(x.se - y.se); }
int get(int x) { x = x % n; if (!x) x = n; return x; }
pll operator-(pll x, pll y) { return pll(x.fi - y.fi, x.se - y.se); }
ll cross(pll x, pll y) { return x.fi * y.se - x.se * y.fi; }
void work() {
cin >> n;
rep (i, 1, n) cin >> a[i].fi >> a[i].se;
rep (len, 2, n) rep (l, 1, n) {
int r = get(l + len - 1);
f[l][r] = max(dis(a[l], a[r]), max(f[l][get(r - 1)], f[get(l + 1)][r]));
}
ll ans = 5e18;
rep (i, 1, n) rep (j, i + 1, n) if (i != j) {
if (cross(a[j] - a[i], a[get(i + 1)] - a[i]) == 0) continue;
if (cross(a[j] - a[i], a[get(i - 1)] - a[i]) == 0) continue;
ans = min(ans, f[i][j] + f[j][i]);
}
cout << ans << '\n';
}
int main() {
cin.tie(nullptr) -> ios::sync_with_stdio(false);
int t; cin >> t;
while (t--) work();
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3740kb
input:
2 4 1 0 2 0 1 1 0 0 6 10 4 9 7 5 7 4 5 6 4 9 3
output:
4 44
result:
ok 2 number(s): "4 44"
Test #2:
score: 0
Accepted
time: 1ms
memory: 3624kb
input:
713 8 8 25 3 15 0 5 10 0 19 2 24 6 23 15 15 34 8 25 16 18 25 10 32 1 23 0 14 21 0 27 2 32 6 7 16 15 8 20 1 16 0 12 16 0 21 1 24 5 7 15 1 18 0 24 8 27 15 4 19 0 17 7 8 4 10 20 0 30 15 0 14 10 6 15 0 24 10 21 14 12 14 7 11 0 3 7 18 7 16 9 12 10 6 9 0 4 5 0 15 1 9 0 23 8 13 14 6 24 0 34 1 41 11 37 20 1...
output:
1075 1389 706 687 1550 497 300 1668 471 162 519 190 786 983 367 930 580 524 509 275 617 298 146 1330 494 965 599 1321 866 1210 233 398 560 1548 871 938 366 500 371 1118 1222 1994 712 586 858 624 697 575 1274 882 1035 406 934 670 990 1231 513 2871 939 2735 1610 834 721 585 203 198 1666 617 1166 326 2...
result:
ok 713 numbers
Test #3:
score: 0
Accepted
time: 2ms
memory: 3700kb
input:
723 6 219724071 0 454078946 131628774 497404433 165947891 427997418 299842932 68283732 510015817 0 327227140 5 277969751 0 576739203 275664810 244855879 638262097 13873538 700473186 0 59956198 10 69526931 509564969 0 395765436 101436487 0 273066511 46581979 904969235 467379058 942000353 535129295 93...
output:
320990950510053393 818929519958899381 1129629590903770087 711353303900820471 683190682500395857 594439231930042527 659610359567672203 1233154227545010165 845514798756141601 410893515758460170 293647337551438590 889581785464512646 1220017957053127490 1180615726625079978 993125871111020743 88416805922...
result:
ok 723 numbers
Test #4:
score: 0
Accepted
time: 7ms
memory: 4156kb
input:
50 100 10788090 640461343 6200823 619327060 0 588075358 2272688 571167135 10484649 531645155 23408105 495027985 37809823 457353729 50543748 426748658 65612394 391936420 74144467 375312692 92238239 342008581 110825102 314274629 136945272 275387892 150625359 258378302 176177538 227408568 211850028 189...
output:
1000855227786024811 909070606999097417 1017431101951290615 990111498358638326 950728988782865680 962774560452779714 996309366656593850 986848706669893356 1081700839718966666 773766023115436171 992970791950402937 973701678270317636 997205411196945405 983632880388713682 992033016531185503 952505046981...
result:
ok 50 numbers
Test #5:
score: 0
Accepted
time: 74ms
memory: 15428kb
input:
5 1000 878526908 228987227 879855378 230541662 883056137 234320630 885582660 237315912 888209996 240551797 891283004 244370572 893274852 246878195 896391978 250849089 898459829 253488754 901495898 257421882 904401963 261232268 906943144 264566136 909037936 267445789 911696142 271101695 913243951 273...
output:
992531084409938036 941345840855103718 1001527316088973221 994659442447419455 991404250855675335
result:
ok 5 number(s): "992531084409938036 94134584085...442447419455 991404250855675335"
Test #6:
score: 0
Accepted
time: 495ms
memory: 199444kb
input:
1 5000 967641745 600438802 967481178 600923111 967219084 601713440 967049837 602223711 966911813 602639084 966682840 603325811 966509662 603840159 966373844 604241989 966137283 604938445 965876558 605705659 965650625 606370144 965512876 606773817 965436585 606996596 965168879 607776452 965094451 607...
output:
977443873239086022
result:
ok 1 number(s): "977443873239086022"
Test #7:
score: 0
Accepted
time: 0ms
memory: 3692kb
input:
3 4 0 0 1000000000 0 1000000000 1000000000 0 1000000000 5 0 0 1 0 1000000000 0 1000000000 1000000000 0 1000000000 6 13 0 51 0 999999989 0 1000000000 999999995 999999995 1000000000 0 999999996
output:
4000000000000000000 3000000000000000001 2999999962000002754
result:
ok 3 number(s): "4000000000000000000 3000000000000000001 2999999962000002754"