QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#562093 | #8946. 一眼丁真 | Kevin5307# | 20 | 2916ms | 4248kb | C++23 | 1.9kb | 2024-09-13 14:58:13 | 2024-09-13 14:58:16 |
Judging History
answer
//Author: Kevin
#include<bits/stdc++.h>
//#pragma GCC optimize("O2")
using namespace std;
#define ll long long
#define ull unsigned ll
#define ld long double
#define pb emplace_back
#define mp make_pair
#define ALL(x) (x).begin(),(x).end()
#define rALL(x) (x).rbegin(),(x).rend()
#define srt(x) sort(ALL(x))
#define rev(x) reverse(ALL(x))
#define rsrt(x) sort(rALL(x))
#define sz(x) (int)(x.size())
#define inf 0x3f3f3f3f
#define pii pair<int,int>
#define lb(v,x) (int)(lower_bound(ALL(v),x)-v.begin())
#define ub(v,x) (int)(upper_bound(ALL(v),x)-v.begin())
#define uni(v) v.resize(unique(ALL(v))-v.begin())
#define longer __int128_t
void die(string S){puts(S.c_str());exit(0);}
const ld pi=acos(-1.0);
inline ld sqr(ld x){return x*x;}
int N,n;
ld x[1005],y[1005];
ld dist[1005];
ld cx,cy;
int p;
ld getLoss(int m,ld diff)
{
ld Angle=atan2(y[p]-cy,x[p]-cx);
ld rot=pi*2/m;
ld ang=pi*(m-2)/m;
ld Loss=0;
for(int i=1;i<=N;i++)
{
ld angle=atan2(y[i]-cy,x[i]-cx);
ld d=angle-Angle+diff;
while(d<0) d+=rot;
while(d>rot) d-=rot;
ld val=sin(ang/2)/sin(pi-ang/2-d);
Loss+=pow(10.0,fabs(dist[i]-val));
}
return Loss;
}
ld getLoss(int m)
{
ld Result=1e18;
const int B=6;
const ld Margin=asin(0.05);
for(ld diff=-Margin;diff<=Margin;diff+=Margin/B)
Result=min(Result,getLoss(m,diff));
return Result;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
while(t--)
{
cin>>N>>n;
for(int i=1;i<=N;i++)
cin>>x[i]>>y[i];
cx=cy=0.0;
for(int i=1;i<=N;i++)
{
cx+=x[i];
cy+=y[i];
}
cx/=N;
cy/=N;
for(int i=1;i<=N;i++)
dist[i]=sqrtl(sqr(x[i]-cx)+sqr(y[i]-cy));
p=max_element(dist+1,dist+N+1)-dist;
ld Loss=1e18;
int Answer=-1;
for(int i=max(3,n-5);i<=n;i++)
{
ld loss=getLoss(i);
if(loss<Loss)
{
Loss=loss;
Answer=i;
}
}
cout<<Answer<<'\n';
}
return 0;
}
詳細信息
Pretests
Final Tests
Test #1:
score: 10
Accepted
time: 2916ms
memory: 4020kb
input:
200 1000 4 -1.65882 -0.468078 -0.559879 0.302541 -1.67025 -0.452322 -0.54312 -1.40252 0.116365 -0.958391 -1.57137 -0.386501 -1.20353 -0.13415 0.123479 -0.934878 -0.597084 -1.41011 -1.69629 -0.489381 -0.0114821 -1.03665 -0.546439 -1.39593 -0.573469 -1.41618 -1.06124 -1.4763 -1.52521 -0.371347 -1.4609...
output:
4 4 3 4 4 3 3 4 4 3 4 4 4 3 4 4 3 4 4 4 4 3 4 3 4 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 4 3 4 3 3 3 3 4 3 3 3 3 4 3 4 3 3 4 4 3 4 3 4 3 4 4 3 3 3 4 3 3 3 4 4 3 3 3 3 4 4 3 3 3 4 3 3 3 3 4 3 4 3 3 3 4 3 3 4 3 3 4 3 4 4 3 3 4 4 3 4 3 4 4 4 3 4 3 4 3 3 3 3 4 3 4 3 3 3 3 3 3 3 4 4 4 3 4 4 3 4 4 4 4 3 3 3 3 3 ...
result:
ok #(wrong) = 0, #(correct) = 200
Test #2:
score: 10
Accepted
time: 2915ms
memory: 4248kb
input:
200 1000 4 0.22827 0.536959 -0.743134 0.215561 -0.0821736 -0.804273 0.470104 -0.194576 0.819679 0.553173 0.212657 0.515942 -0.379762 -0.349824 0.140334 -0.864474 -0.033494 0.513621 0.673108 0.243877 0.716308 0.318053 -0.108843 -0.719375 0.102132 -0.924612 0.0141018 -0.921927 0.710421 0.53719 -0.4572...
output:
3 4 3 4 3 3 3 3 4 3 4 4 4 4 4 4 4 3 4 4 3 3 3 4 4 4 4 4 3 3 3 4 4 4 4 4 3 3 3 4 4 4 3 3 4 4 3 4 3 4 3 4 3 3 4 4 3 3 3 4 4 3 4 4 4 4 3 3 3 3 3 3 4 4 3 4 4 4 4 4 3 3 3 4 3 4 3 3 3 3 3 3 3 3 4 4 4 4 4 3 3 3 3 4 3 4 4 3 3 3 4 4 3 4 3 3 4 3 4 3 4 3 4 4 3 4 4 4 3 3 3 3 3 4 4 3 4 4 3 4 4 4 4 4 3 4 3 3 4 3 ...
result:
ok #(wrong) = 0, #(correct) = 200
Test #3:
score: 0
Time Limit Exceeded
input:
200 1000 10 0.171063 0.768938 0.339764 0.873943 1.15161 0.672578 0.805594 0.765797 1.15695 0.666805 1.26595 -0.695135 1.20927 0.578729 -0.356686 -0.292753 0.940372 -0.919379 -0.269337 -0.62435 -0.0757841 0.550908 1.52432 0.00176461 -0.366525 0.00974288 0.524328 0.851771 1.37215 0.224858 0.655827 -0....
output:
result:
Test #4:
score: 0
Time Limit Exceeded
input:
200 1000 10 -0.83557 -0.43386 -0.900052 0.302486 0.843787 0.446154 -0.0854311 -0.918758 0.501433 0.844022 -0.955344 -0.173521 0.516729 0.8388 -0.917289 0.0698801 -0.925852 0.0681056 -0.848415 0.471305 0.098655 0.922883 0.958545 0.273256 0.67931 0.611085 -0.951816 -0.0694206 -0.245102 0.947475 0.9397...
output:
result:
Test #5:
score: 0
Time Limit Exceeded
input:
200 1000 20 1.10645 1.72762 0.00828014 0.0575131 -0.300448 0.537454 0.138879 1.67906 0.73884 1.83804 -0.331532 1.01263 1.57294 1.17098 1.61097 0.722726 0.267742 1.7481 0.805786 -0.115483 1.63489 0.918378 0.358705 -0.0984941 -0.303133 1.14962 1.59952 1.0805 -0.22276 1.35792 1.06748 1.74928 1.48122 1....
output:
result:
Test #6:
score: 0
Time Limit Exceeded
input:
200 1000 20 0.306231 0.947555 -0.470695 -0.867584 0.0798229 -0.979712 0.972425 -0.18076 0.205552 0.977367 0.503871 -0.843521 0.931879 -0.34759 -0.528287 -0.821234 0.384399 0.889843 0.0427201 -0.995252 0.911209 0.407903 -0.925169 0.281163 1.01054 0.00777535 0.829844 0.506267 0.145597 -0.98502 -0.2980...
output:
result:
Test #7:
score: 0
Time Limit Exceeded
input:
200 1000 25 -0.150207 0.698438 0.0893216 1.09445 1.69859 -0.01418 0.00876932 1.00054 -0.0563829 0.902229 0.736602 1.41841 -0.147213 0.274848 -0.182403 0.345741 1.63542 -0.149404 1.80616 0.580086 1.56376 -0.247799 0.32449 1.26092 0.627195 1.41568 -0.0382449 -0.105866 0.129226 1.13973 0.0847462 -0.261...
output:
result:
Test #8:
score: 0
Time Limit Exceeded
input:
200 1000 25 0.964683 -0.212993 0.98252 -0.136339 -0.168828 -0.971035 0.865174 -0.484339 0.571258 -0.82591 -0.797776 -0.589278 -0.307998 -0.948622 -0.80831 0.593024 -0.659663 0.745975 0.923635 -0.380449 0.996853 -0.0380425 0.679349 0.732259 -0.0225609 1.00911 0.717309 -0.710159 -0.425272 -0.901905 0....
output:
result:
Test #9:
score: 0
Time Limit Exceeded
input:
200 1000 30 -0.823086 -1.0434 0.105428 -0.15483 -0.502513 -0.953264 0.0771079 -0.121858 -1.23449 0.876862 -0.0812511 -0.664993 -0.241982 0.678029 -0.622296 0.896641 -1.20049 0.882673 -1.88268 -0.190726 0.0489134 -0.354098 0.0159866 -0.415372 -0.167045 -0.751293 -0.0637444 -0.612609 0.0696068 -0.3288...
output:
result:
Test #10:
score: 0
Time Limit Exceeded
input:
200 1000 30 -0.922656 0.353773 0.603763 -0.788179 -0.461439 0.857645 -0.991954 -0.0838754 -0.144937 0.982998 0.605566 -0.771346 0.0629471 0.988433 0.995332 -0.0164629 -0.878948 0.473977 -0.852896 0.501311 0.840425 0.516425 0.440577 0.898323 -0.515795 0.861164 0.116181 -1.00427 -0.477573 -0.879226 0....