QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#610438 | #9417. Palindromic Polygon | UESTC_Snow_Halation# | TL | 440ms | 9920kb | C++14 | 3.7kb | 2024-10-04 15:56:25 | 2024-10-04 15:56:33 |
Judging History
answer
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#define FOR() ll le=e[u].size();for(ll i=0;i<le;i++)
#define QWQ cout<<"QwQ\n";
#define ll long long
#include <vector>
#include <queue>
#include <map>
using namespace std;
const ll N=505;
const ll qwq=303030;
const ll inf=0x3f3f3f3f;
inline ll read() {
ll sum = 0, ff = 1; char c = getchar();
while(c<'0' || c>'9') { if(c=='-') ff = -1; c = getchar(); }
while(c>='0'&&c<='9') { sum = sum * 10 + c - '0'; c = getchar(); }
return sum * ff;
}
ll T;
ll n;
ll a[N],c[N];
struct E{
ll x,y;
}b[N];
ll vis[N][N];
ll f[N][N];
ll f2[N][N];
// ll mi[N][N][N];
map <ll,ll> fi;
ll ans = 0;
int sum[N][N];
inline E operator - (E A,E B) { return {A.x-B.x,A.y-B.y}; }
inline ll cha(E A,E B) { return abs(A.x*B.y-A.y*B.x); }
inline ll ask(ll i,ll j,ll k) {
return cha(b[i]-b[j],b[i]-b[k]);
}
inline ll ask2(ll i,ll j,ll k,ll l) {
return ask(i,j,k)+ask(k,l,j);
}
int head[N]={}, cur[N]={}, you[N]={};
void DFS(ll i,ll j) {
memset(head,0,sizeof(int) * (n+5));
memset(cur,0,sizeof(int) * (n+5));
memset(you,0,sizeof(int) * (n+5));
for(ll k=(i+1)%n;k!=j;(k+=1)%=n) {
f[i][j] = max(f[i][j],ask(i,j,k));
int c = a[k];
if(!you[c]) {
head[c] = k;
}
you[c]++;
cur[c] = k;
}
for(ll y=(i+1)%n;y!=j;(y+=1)%=n) {
int c = a[y];
ll x = head[c];
if(you[c]==2) continue;
if(x==y) continue;
// cout<<"i = "<<i<<" j = "<<j<<" : ";
// cout<<" x = "<<x<<" y = "<<y<<"\n";
f[i][j] = max(f[i][j],ask2(i,j,x,y)+f[x][y]);
f2[i][j] = max(f2[i][j],ask2(i,j,x,y)+f2[x][y]);
}
for(ll x=(i+1)%n;x!=j;(x+=1)%=n) {
int c = a[x];
ll y = cur[c];
if(x==y) continue;
// cout<<"i = "<<i<<" j = "<<j<<" : ";
// cout<<" x = "<<x<<" y = "<<y<<"\n";
f[i][j] = max(f[i][j],ask2(i,j,x,y)+f[x][y]);
f2[i][j] = max(f2[i][j],ask2(i,j,x,y)+f2[x][y]);
}
}
void chushihua() {
fi.clear();
ans = 0;
for(ll i=0;i<=n;i++) for(ll j=0;j<=n;j++) vis[i][j] = f[i][j] = f2[i][j] = 0;
}
int main() {
// freopen("data.in","r",stdin);
T = read();
while(T--) {
chushihua();
n = read();
for(ll i=0;i<n;i++) {
a[i] = read(); c[i] = a[i];
}
sort(c,c+n);
ll now = 0;
for(ll i=0;i<n;i++) {
if(i==0 || c[i]!=c[i-1]) now++;
fi[c[i]] = now;
}
for(ll i=0;i<n;i++) a[i] = fi[a[i]];
// sum[0][a[0]] = 1;
// for(int i=1;i<n;i++) {
// sum[i][a[i]] = 1;
// for(int j=1;j<=n;j++) sum[i][j] += sum[i-1][j];
// }
for(ll i=0;i<n;i++) {
b[i].x = read(); b[i].y = read();
}
for(ll i=1;i<n;i++) {
for(ll j=0;j<n;j++) {
DFS(j,(j+i)%n);
}
}
// for(ll i=0;i<n;i++) {
// for(ll j=0;j<n;j++) {
// if(a[i]!=a[j] || i==j) continue;
// DFS(i,j);
// }
// }
for(ll i=0;i<n;i++) {
for(ll j=i+1;j<n;j++) {
if(a[i]!=a[j]) continue;
ans = max(ans, f2[i][j] + f2[j][i]);
ans = max(ans, f[i][j] + f2[j][i]);
ans = max(ans, f2[i][j] + f[j][i]);
}
}
cout<<ans<<"\n";
}
return 0;
}
/*
3
8
2 4 2 4 3 4 5 3
2 3
0 6
-3 3
-3 0
-2 -3
1 -5
3 -3
4 0
3
1 2 3
0 0
1 0
0 1
3
1 1 1
0 0
1 0
0 1
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 7908kb
input:
3 8 2 4 2 4 3 4 5 3 2 3 0 6 -3 3 -3 0 -2 -3 1 -5 3 -3 4 0 3 1 2 3 0 0 1 0 0 1 3 1 1 1 0 0 1 0 0 1
output:
84 0 1
result:
ok 3 number(s): "84 0 1"
Test #2:
score: 0
Accepted
time: 0ms
memory: 9780kb
input:
1 4 1000000000 1000000000 1000000000 1000000000 -1000000000 -1000000000 1000000000 -1000000000 1000000000 1000000000 -1000000000 1000000000
output:
8000000000000000000
result:
ok 1 number(s): "8000000000000000000"
Test #3:
score: 0
Accepted
time: 2ms
memory: 7816kb
input:
129 10 604040473 604040473 287094217 682965575 70435786 287094217 604040473 287094217 682965575 92620053 -193 -184 -200 -200 -125 -169 -120 -157 -120 -145 -124 -139 -137 -136 -155 -149 -172 -163 -187 -177 5 346787871 346787871 113397429 113397429 346787871 -173 -181 -186 -166 -200 -195 -194 -200 -17...
output:
3857 1068 877 516 2668 3559 1165 3468 560 925 3502 696 3824 1746 2970 1826 613 2221 1130 4677 1900 1646 564 273 3203 6572 1070 3330 1024 765 142 3038 1615 9445 2122 320 1741 2561 1145 480 2094 5119 5458 2446 3929 2249 4378 4927 2356 1473 3152 1574 1990 1609 3367 2298 1459 2663 2617 2298 4048 215 546...
result:
ok 129 numbers
Test #4:
score: 0
Accepted
time: 2ms
memory: 7772kb
input:
135 5 1 1 2 113253381 2 -187 -200 -185 -199 -172 -161 -192 -163 -200 -181 6 2 1 558119535 2 681168219 1 -159 -157 -200 -181 -197 -188 -190 -200 -179 -187 -164 -169 9 330122537 1 43508877 1 330122537 2 43508877 43508877 2 -115 -171 -127 -160 -140 -158 -153 -161 -170 -166 -190 -181 -200 -200 -126 -197...
output:
1199 1019 4995 993 374 2202 5999 2738 1610 287 2402 2421 1968 2253 889 2109 3594 1369 660 3823 1039 779 1068 1961 793 4749 906 1528 834 1125 244 532 1943 999 2279 274 1928 1969 3195 4189 762 1266 1330 6496 550 1452 2392 5402 246 1504 1603 1190 2002 2010 3855 5341 1096 730 4077 1005 368 2383 2465 278...
result:
ok 135 numbers
Test #5:
score: 0
Accepted
time: 0ms
memory: 9920kb
input:
68 18 177729849 694994462 698865345 342457858 192803483 342457858 666388583 192803483 981906585 981906585 477960944 666388583 477960944 666388583 279990638 192803483 666388583 378306063 -247299689 -596018085 -257763469 -530664858 -307204843 -477869906 -830737754 -587840234 -915132692 -619194354 -100...
output:
454110023930570607 183756804328850070 298315022228123202 307512523943663260 356398611422117225 175693541183498183 85435294912017589 90055534959464621 470255288030458232 72285943569225582 93246116205839344 204734350926653941 181050899065321759 92595596931349298 252462643584630356 170478369910592368 2...
result:
ok 68 numbers
Test #6:
score: 0
Accepted
time: 4ms
memory: 7800kb
input:
68 17 4 5 364570994 3 364570994 922037103 1 2 1 3 4 922037103 348120378 922774606 2 5 348120378 -944527911 -585310186 -985388783 -648105509 -996957301 -724274531 -1000000000 -776231334 -987660458 -849026993 -956240043 -910614062 -921236523 -949464303 -824975533 -1000000000 -758560856 -997163831 -685...
output:
283257114140518651 196218877050842110 222494863055424896 205446281561853782 250005106663316430 97542520284278361 366125469664341547 45201313979184996 302406140775158311 273846619401894473 114076427182578290 296093289576963628 314427730122999682 275016401751244176 113458042513568150 65331043997675878...
result:
ok 68 numbers
Test #7:
score: 0
Accepted
time: 408ms
memory: 8432kb
input:
5 200 609999526 472639833 217024831 181719265 607443350 247865634 182637039 952698029 667998662 552937384 309920961 395554742 529168804 633125523 572946770 964103704 809297865 675769477 8628527 954614525 607443350 402709616 933276333 156118214 382882490 982120770 8449875 613209070 635469591 90592427...
output:
26672937937698 21734491556698 26790824844133 30739464810342 25766825658360
result:
ok 5 number(s): "26672937937698 21734491556698 ...3 30739464810342 25766825658360"
Test #8:
score: 0
Accepted
time: 438ms
memory: 8436kb
input:
5 200 492204292 199500284 956414792 947905664 397147741 584603063 477504704 67732501 947905664 168522928 23355651 717940721 618420996 23355651 850784605 928119758 717940721 375517624 745458203 790993066 558764624 889247289 690761448 654316570 720267356 380473009 294135686 730680716 871352642 7131338...
output:
25179077707847 24610803287778 27879482074960 26586509092648 23860637721112
result:
ok 5 number(s): "25179077707847 24610803287778 ...0 26586509092648 23860637721112"
Test #9:
score: 0
Accepted
time: 409ms
memory: 9840kb
input:
5 200 84 35 20 33 36 78 24 47 5 18 90 100 48 99 17 86 92 42 22 22 91 15 16 34 61 2 52 72 31 71 24 67 10 64 72 81 56 47 34 58 75 46 59 85 27 14 14 83 30 42 13 89 38 52 51 66 44 51 62 41 28 40 12 79 23 56 81 8 60 69 65 68 26 96 55 68 46 70 1 21 84 44 62 4 23 99 69 18 35 54 37 19 39 93 48 8 43 53 16 93...
output:
25742598865692 23940201061139 21774320032543 29925923291252 25943299932354
result:
ok 5 number(s): "25742598865692 23940201061139 ...3 29925923291252 25943299932354"
Test #10:
score: 0
Accepted
time: 426ms
memory: 8672kb
input:
5 200 30 1 9 6 855627481 44 807240211 19 328678825 43 2 611193007 21 1 17357465 777452512 296168618 293501368 41887972 16 460434285 25 17 2 820070575 32 49 11 50 7 876136756 48 167436795 18 44 9 32 34 492450178 92584206 117799001 753835505 447351438 293501368 14 45 17357465 47 419370691 820070575 8 ...
output:
25588520303771 24556295312210 22684955350359 25702614992989 26005004619374
result:
ok 5 number(s): "25588520303771 24556295312210 ...9 25702614992989 26005004619374"
Test #11:
score: 0
Accepted
time: 440ms
memory: 9796kb
input:
5 200 8 870822545 888011437 384726727 366602674 888011437 384726727 384726727 366602674 870822545 870822545 384726727 651014332 10 888011437 411902203 611980057 910184732 411902203 651014332 411902203 723545326 5 3 319317853 476997146 910184732 8 888011437 651014332 611980057 7 611980057 910184732 5...
output:
26138916026487 24620851403857 25071187076679 25469429774328 30775803237893
result:
ok 5 number(s): "26138916026487 24620851403857 ...9 25469429774328 30775803237893"
Test #12:
score: 0
Accepted
time: 435ms
memory: 9792kb
input:
5 200 817980653 817980653 125172097 125172097 817980653 163615641 163615641 817980653 817980653 668379506 817980653 125172097 163615641 163615641 125172097 125172097 125172097 125172097 668379506 817980653 817980653 163615641 817980653 817980653 817980653 817980653 817980653 163615641 163615641 6683...
output:
26176012030413 25187907268116 26211235264533 24618377847566 26109975005241
result:
ok 5 number(s): "26176012030413 25187907268116 ...3 24618377847566 26109975005241"
Test #13:
score: 0
Accepted
time: 428ms
memory: 9728kb
input:
5 200 212397750 992618221 212397750 992618221 992618221 212397750 992618221 992618221 992618221 992618221 992618221 212397750 2 992618221 992618221 992618221 212397750 212397750 992618221 212397750 212397750 992618221 212397750 212397750 992618221 992618221 992618221 992618221 212397750 212397750 21...
output:
24420005315074 25336424651447 23383079383207 25959789505886 25582059787979
result:
ok 5 number(s): "24420005315074 25336424651447 ...7 25959789505886 25582059787979"
Test #14:
score: -100
Time Limit Exceeded
input:
2 500 250285849 580799867 401195916 661392649 274956707 428122906 643570314 597693323 592665916 548828299 95425938 535055216 384703504 881144262 438319718 745176673 592665916 880144539 422267581 531703035 896349921 462725647 550924100 68263737 86309277 974901795 379678136 311335012 808714258 8693175...