QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#661313 | #9434. Italian Cuisine | wyhao | TL | 12ms | 3916kb | C++14 | 1.7kb | 2024-10-20 15:46:29 | 2024-10-20 15:46:33 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int N=100005;
typedef long long ll;
int n;
ll px[N],py[N];
ll cx,cy,r;
ll S[N];
ll area(ll x1,ll y1,ll x2,ll y2){
return x1*y2-x2*y1;
}
ll glr(int l,int r){
if(l<=r) return S[r]-S[l-1];
else return S[n]-S[l-1]+S[r];
}
inline int rd(){
int x=0,f=1;char c=getchar();
while(c<'0' or c>'9'){
if(c=='-') f=-1;
c=getchar();
}
while('0'<=c and c<='9'){
x=(x<<1)+(x<<3)+(c-'0');
c=getchar();
}
return x*f;
}
bool check(ll x1,ll y1,ll x2,ll y2){
__int128 S1 = area(x1,y1,x2,y2);
S1*=S1;
__int128 S2 = ((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
S2*=r*r;
return S1<S2;
}
void solve(){
// puts("aaa");
n=rd();
cx=rd();cy=rd();r=rd();
// puts("bbb");
for(int i=1;i<=n;i++){
px[i]=rd();py[i]=rd();
}
for(int i=1;i<=n;i++){
int j = i%n+1;
S[i] = abs(area(px[i]-cx,py[i]-cy,px[j]-cx,py[j]-cy))+S[i-1];
// printf("%lld\n",S[i]-S[i-1]);
}
int i=1,j=2;
ll ans=0;
for(;i<=n;i++){
if(j<i%n+1) j=i%n+1;
while(!check(px[i]-cx,py[i]-cy,px[j%n+1]-cx,py[j%n+1]-cy) and area(px[j%n+1]-px[i],py[j%n+1]-py[i],cx-px[i],cy-py[i])>=0) j=j%n+1;
if(j==i%n+1) continue;
// printf("%d %d\n",i,j);
ll ansk = glr(i,(j==1)?n:(j-1))-abs(area(px[i]-cx,py[i]-cy,px[j]-cx,py[j]-cy));
// printf("%lld %lld\n",glr(i,(j==1)?n:(j-1)),ansk);
ans = max(ans,ansk);
}
printf("%lld\n",ans);
}
int main(){
// freopen("ex.in","r",stdin);
int tests=rd();
while(tests--){
solve();
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3876kb
input:
3 5 1 1 1 0 0 1 0 5 0 3 3 0 5 6 2 4 1 2 0 4 0 6 3 4 6 2 6 0 3 4 3 3 1 3 0 6 3 3 6 0 3
output:
5 24 0
result:
ok 3 number(s): "5 24 0"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3872kb
input:
1 6 0 0 499999993 197878055 -535013568 696616963 -535013568 696616963 40162440 696616963 499999993 -499999993 499999993 -499999993 -535013568
output:
0
result:
ok 1 number(s): "0"
Test #3:
score: 0
Accepted
time: 8ms
memory: 3868kb
input:
6666 19 -142 -128 26 -172 -74 -188 -86 -199 -157 -200 -172 -199 -186 -195 -200 -175 -197 -161 -188 -144 -177 -127 -162 -107 -144 -90 -126 -87 -116 -86 -104 -89 -97 -108 -86 -125 -80 -142 -74 -162 -72 16 -161 -161 17 -165 -190 -157 -196 -154 -197 -144 -200 -132 -200 -128 -191 -120 -172 -123 -163 -138...
output:
5093 3086 2539 668 3535 7421 4883 5711 5624 1034 2479 3920 4372 2044 4996 5070 2251 4382 4175 1489 1154 3231 4038 1631 5086 14444 1692 6066 687 1512 4849 5456 2757 8341 8557 8235 1013 5203 10853 6042 6300 4480 2303 2728 1739 2187 3385 4266 6322 909 4334 1518 948 5036 1449 2376 3180 4810 1443 1786 47...
result:
ok 6666 numbers
Test #4:
score: 0
Accepted
time: 12ms
memory: 3916kb
input:
6660 19 -689502500 -712344644 121094647 -534017213 -493851833 -578925616 -506634533 -663335128 -540066520 -748890119 -585225068 -847722967 -641694086 -916653030 -716279342 -956235261 -766049951 -1000000000 -836145979 -963288744 -923225928 -948140134 -944751289 -920681768 -972760883 -872492254 -10000...
output:
117285633945667137 89094762176992129 84336379088082383 63629451600307531 193020267813347512 73921930794195237 59524748406448173 34419869321856821 207356845785317033 185783506654647921 80463327658075813 156569165998743736 129550296314602340 157065066097450631 77819745596643484 40796197589680466 11394...
result:
ok 6660 numbers
Test #5:
score: 0
Accepted
time: 9ms
memory: 3876kb
input:
6646 17 -822557900 -719107452 81678600 -810512657 -985436857 -717822260 -1000000000 -636451281 -949735403 -599009378 -915571539 -596352662 -824307789 -736572772 -553995003 -765031367 -500309996 -797636289 -458500641 -842827212 -428669086 -871078362 -428977078 -928761972 -490982466 -999825512 -570408...
output:
110526056201314429 15027921575542560 53254517372894023 258485758440262622 34392829191543913 76614213562057620 145259866156654928 42339731416270977 143102643161355094 106105394104280855 145392090901459236 43856914998019051 173982988807640937 44231578293584008 58978505810355496 23485666110810764 12532...
result:
ok 6646 numbers
Test #6:
score: 0
Accepted
time: 12ms
memory: 3816kb
input:
6669 15 -874867377 -757943357 7111757 -974567193 -807217609 -949619167 -890139925 -934615014 -930145748 -888846948 -960741232 -795467329 -1000000000 -722124377 -940364550 -622857698 -842665231 -578818283 -747428314 -780030596 -534753737 -866558348 -484345048 -928090924 -519994734 -987269004 -5856231...
output:
182950707425830089 29338404516797685 84520746595092394 105477320399449524 73884037892247358 49031829753894899 48108760133499810 178434777514737858 31287633742235961 84173958668093920 15282003310382472 106987783997819044 50751134064267722 22920035202317059 79797616191974237 75995194318427644 94277118...
result:
ok 6669 numbers
Test #7:
score: 0
Accepted
time: 12ms
memory: 3860kb
input:
6673 11 -746998467 -874016929 25938500 -1000000000 -901415571 -645111069 -992353393 -547811885 -1000000000 -483640464 -931109189 -546643988 -877114659 -625764830 -834162211 -723093733 -813353581 -811419393 -799116488 -879584543 -791576283 -944145006 -828676656 -998000881 -880308971 14 -826271552 -81...
output:
54570343814105147 74950556637655098 38052401037814742 109159348998561498 21083015515232346 31649646072675313 42326841119894707 158636477858979605 129690295986443039 112077348808529800 16900062518936042 63732368902300348 79182769273740625 142098431062104007 111981825046535522 38580332981675983 631960...
result:
ok 6673 numbers
Test #8:
score: -100
Time Limit Exceeded
input:
1 100000 312059580 -177336163 523906543 43599219 998132845 43570757 998134606 43509809 998138374 43456461 998141672 43379797 998146410 43325475 998149757 43283580 998152335 43207966 998156986 43131288 998161701 43054854 998166387 42988614 998170421 42922795 998174418 42844022 998179189 42778015 9981...