QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#609725#9417. Palindromic PolygonKanate#AC ✓485ms35384kbC++143.1kb2024-10-04 13:47:512024-10-04 13:47:53

Judging History

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

  • [2024-10-04 13:47:53]
  • 评测
  • 测评结果:AC
  • 用时:485ms
  • 内存:35384kb
  • [2024-10-04 13:47:51]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define rint int
#define endl '\n'
#define uint unsigned long long
void debug(int *a,int n){for(rint i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;}
void debug(int *a){for(rint i=1;a[i];i++) cout<<a[i]<<" ";cout<<endl;}
void debug(int x){cout<<"debug: "<<x<<endl;}
int read(){
    int x=0,f=1;char c=getchar();
    while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
    while(isdigit(c))x=x*10+c-48,c=getchar();
    return x*f;
}const int N=1010,p=1e9,mod=998244353;

int n,a[N],cnt,b[N],nxt[N][N],pre[N][N];
struct Point{
	int x,y;
	Point operator-(const Point &A)const{return {x-A.x,y-A.y};}
	int   operator^(const Point &A)const{return abs(x*A.y-y*A.x);}
}P[N];
inline Point adjus(int x,int y){
	swap(x,y);
	if(x>n) x-=n;
	if(y<x) y+=n;
	return {x,y};
}

inline int cal(int x,int y,int z,int k)
{
	// puts("cal");
	return ((P[x]-P[y])^(P[x]-P[k]))+((P[z]-P[y])^(P[z]-P[k]));
}
inline int cal(int x,int y,int k)
{
	// puts("cal");
	return ((P[x]-P[y])^(P[x]-P[k]));
}

int dfs(int l,int r);
int bfs(int l,int r);

int f[N][N];
int dfs(int l,int r)
{
	if(f[l][r]!=-1) return f[l][r];
	int res=0;
	// for(rint k=1;k<=cnt;k++)
	// {
	// 	const int i=nxt[l][k],j=pre[r][k];
	// 	if(i<j) res=max(res,dfs(i,j)+cal(l,i,j,r));
	// }
	if(0)
	{
		for(rint i=l+1;i<r;i++)
		for(rint j=i+1;j<r;j++)
		if(a[i]==a[j])
			res=max(res,dfs(i,j)+cal(l,i,j,r));
	}
	else
	{
		for(rint i=l+1;i<r;i++)
		res=max(res,bfs(i,r)+cal(l,i,r));
	}
	return f[l][r]=res;
}
int g[N][N];
int bfs(int l,int r)
{
	if(g[l][r]!=-1) return g[l][r];
	int res=-4e18;
	for(rint i=l+1;i<r;i++)
	if(a[i]==a[l])
		res=max(res,dfs(l,i)+cal(l,i,r));
	return g[l][r]=res;
}

void Work()
{
	n=read(),cnt=0;
	for(rint i=1;i<=n;i++) a[i]=a[i+n]=read(),b[++cnt]=a[i];
	sort(b+1,b+cnt+1);
	cnt=unique(b+1,b+cnt+1)-b-1;
	for(rint i=1;i<=n<<1;i++) a[i]=lower_bound(b+1,b+cnt+1,a[i])-b;
	
	static int c[N];
	for(rint i=1;i<=cnt;i++) c[i]=n*2+1;
	for(rint i=n<<1;i;i--)
	{
		for(rint j=1;j<=cnt;j++) nxt[i][j]=c[j];
		c[a[i]]=i;
	}
	for(rint i=1;i<=cnt;i++) c[i]=0;
	for(rint i=1;i<=n<<1;i++)
	{
		for(rint j=1;j<=cnt;j++) pre[i][j]=c[j];
		c[a[i]]=i;
	}
	
	for(rint i=1;i<=n;i++) P[i]=P[i+n]={read(),read()};
	
	for(rint i=0;i<=n*2;i++)
	for(rint j=0;j<=n*2;j++) f[i][j]=g[i][j]=-1;
	// memset(f,-1,sizeof f);
	
	int ans=0;
	for(rint i=1;i<=n;i++)
	for(rint j=i+1;j<i+n;j++)
	if(a[i]==a[j])
	{
		// cout<<i<<" "<<j<<" "<<dfs(i,j)<<endl;
		ans=max(ans,dfs(i,j));
	}	
	
	// for(rint i=1;i<=n;i++)
	// for(rint j=i+1;j<i+n;j++)
	// if(a[i]==a[j])
	// 	assert(P[i].x==P[adjus(i,j).y].x),
	// 	assert(P[i].y==P[adjus(i,j).y].y),
	// 	assert(P[j].x==P[adjus(i,j).x].x),
	// 	assert(P[j].y==P[adjus(i,j).x].y);
	
	for(rint i=1;i<=n;i++)
	for(rint j=i+1;j<i+n;j++)
	if(a[i]==a[j])
	for(rint k=i+1;k<j;k++)
		ans=max(ans,cal(i,j,k)+dfs(adjus(i,j).x,adjus(i,j).y));
	
	cout<<ans<<endl;
}

signed main()
{
    #ifndef ONLINE_JUDGE
	freopen("1.in", "r", stdin);
	// freopen("1.out", "w", stdout);
	#else
	#endif
    
	// int T=1;
	int T=read();
	while(T--) Work();
	
    return 0;
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 9828kb

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

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: 1ms
memory: 9784kb

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: 1ms
memory: 9916kb

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: 2ms
memory: 9888kb

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: 0ms
memory: 14112kb

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: 6ms
memory: 19064kb

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: 9ms
memory: 19228kb

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: 7ms
memory: 24716kb

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: 8ms
memory: 25936kb

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: 30ms
memory: 24512kb

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: 51ms
memory: 26112kb

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: 85ms
memory: 26332kb

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: 0
Accepted
time: 31ms
memory: 35384kb

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...

output:

148932394479904
154174289817183

result:

ok 2 number(s): "148932394479904 154174289817183"

Test #15:

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

input:

2
500
949563149 328612154 460785000 575821013 653281828 795841469 254532165 949563149 201859963 321853857 543557486 260875897 615307892 283709631 56492240 73771155 907703161 246563892 962285534 213433892 254428673 378181126 231227997 916759825 389322999 543557486 254428673 382216426 520489024 415367...

output:

152920875589467
146994747277368

result:

ok 2 number(s): "152920875589467 146994747277368"

Test #16:

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

input:

2
500
199 123 12 243 208 167 191 187 212 45 214 160 29 209 154 102 124 140 155 90 119 47 214 171 103 200 165 16 198 231 202 145 19 176 40 193 183 50 212 28 105 238 177 179 127 116 204 67 243 149 93 23 222 116 200 38 149 174 169 219 122 153 92 216 8 67 58 181 185 232 138 189 133 59 72 210 106 111 30 ...

output:

166697813512230
163068164683089

result:

ok 2 number(s): "166697813512230 163068164683089"

Test #17:

score: 0
Accepted
time: 44ms
memory: 35380kb

input:

2
500
47 873285980 79 849771068 74 1 44 94 120 19 200446046 77 11 22 17 34 72 538801034 972859531 26 86 773234986 43 65 189731974 213731477 665326879 74 8 99 16 501881943 256119516 4 81 5 94 392347711 213731477 13 172643627 91 82 733662021 14 125 60 20 121 154440980 463976233 690756841 208950480 122...

output:

173330999736669
152174681452318

result:

ok 2 number(s): "173330999736669 152174681452318"

Test #18:

score: 0
Accepted
time: 80ms
memory: 34892kb

input:

2
500
540767236 963353518 561314711 81529695 7 922697634 919109514 767431537 478297881 493445298 63090798 406478570 11 55 32 56 162788153 401080796 432220145 919109514 52 56 41 23 120695251 54 561314711 493445298 705279452 358783590 509626765 182281030 614041703 44261929 681696090 561314711 16278815...

output:

159663591152060
158072356086552

result:

ok 2 number(s): "159663591152060 158072356086552"

Test #19:

score: 0
Accepted
time: 114ms
memory: 35264kb

input:

2
500
266649322 682547799 808972918 596605297 217916121 107173579 413534051 217916121 934948565 27 422367079 422367079 217916121 87875810 87875810 413534051 13 169854310 202383590 314937934 283020826 632112772 986212611 169854310 87875810 596605297 19 808972918 836612378 733968754 733968754 63211277...

output:

169410553734380
165802983119455

result:

ok 2 number(s): "169410553734380 165802983119455"

Test #20:

score: 0
Accepted
time: 158ms
memory: 34556kb

input:

2
500
583670485 13 2608273 847215851 556630050 554918196 732375307 272837728 899937572 2608273 732375307 554918196 732375307 847215851 3 856869545 272837728 554918196 847215851 7 2608273 847215851 317707407 899937572 554918196 583670485 879430504 2 965838562 847215851 879430504 272837728 556630050 8...

output:

158326373826089
150187630936592

result:

ok 2 number(s): "158326373826089 150187630936592"

Test #21:

score: 0
Accepted
time: 231ms
memory: 35224kb

input:

2
500
756582711 575924897 118687709 695386745 575924897 695386745 897710981 239579019 897710981 897710981 695386745 695386745 756582711 695386745 575924897 118687709 756582711 695386745 239579019 239579019 4 756582711 575924897 239579019 575924897 1 239579019 575924897 756582711 239579019 575924897 ...

output:

176833038255727
153234216106459

result:

ok 2 number(s): "176833038255727 153234216106459"

Test #22:

score: 0
Accepted
time: 485ms
memory: 35284kb

input:

2
500
270188663 76390750 76390750 270188663 270188663 76390750 76390750 270188663 76390750 270188663 76390750 76390750 76390750 270188663 270188663 76390750 76390750 270188663 270188663 270188663 76390750 270188663 270188663 270188663 270188663 270188663 76390750 270188663 270188663 270188663 270188...

output:

160330837189026
149529694641768

result:

ok 2 number(s): "160330837189026 149529694641768"

Extra Test:

score: 0
Extra Test Passed