QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#847584 | #9869. Horizon Scanning | enze114514 | AC ✓ | 88ms | 13040kb | C++20 | 6.0kb | 2025-01-08 07:03:22 | 2025-01-08 07:03:23 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
#define pb push_back
const ld pi = 3.14159265358979323846;
const int mod = (int)1e9 + 7;
const ll INF = 1e18;
template<typename T>
T chmax(T a, T b){
return a > b ? a : b;
}
template<typename T>
T chmin(T a, T b){
return a > b ? b : a;
}
const int N = (int)2e5 + 1, M = N * 2;
template<typename T>
struct Point{
T x, y;
ld eps;
Point() : x(0), y(0), eps(1e-9) {}
Point(T x, T y) : x(x), y(y), eps(1e-9) {}
void set_eps(T eps){
this->eps = eps;
}
Point operator+ (const Point& b){
return Point(x + b.x, y + b.y);
}
Point operator- (const Point& b){
return Point(x - b.x, y - b.y);
}
Point operator- (){
return Point(-x, -y);
}
Point operator* (T t) const{
return Point(x * t, y * t);
}
Point operator/ (T t) const{
return Point(x / t, y / t);
}
Point &operator+=(Point p) &{
x += p.x;
y += p.y;
return *this;
}
Point &operator-=(Point p) &{
x -= p.x;
y -= p.y;
return *this;
}
Point &operator*=(T v) &{
x *= v;
y *= v;
return *this;
}
Point &operator/=(T v) &{
x /= v;
y /= v;
return *this;
}
Point &operator=(const Point& b) &{
x = b.x;
y = b.y;
return *this;
}
friend Point operator+ (const Point& a, const Point& b){
return {a.x + b.x, a.y + b.y};
}
friend Point operator- (const Point& a, const Point& b){
return {a.x - b.x, a.y - b.y};
}
friend bool operator==(Point a, Point b){
return a.x == b.x && a.y == b.y;
}
int sign(T x){
if(fabs(x) < eps){
return 0;
}
if(x < 0){
return -1;
}
return 1;
}
bool cmp(T x, T y){
if(fabs(x - y) > eps){
return 0;
}
return 1;
}
bool cmp(const Point& a, const Point& b){
return cmp(a.x, b.x) && cmp(a.y, b.y);
}
T dot(const Point& a, const Point& b){
return a.x * b.x + a.y * b.y;
}
T square(Point a){
return dot(a, a);
}
T cross(const Point& a, const Point& b){
return a.x * b.y - a.y * b.x;
}
T cross(const Point& a, const Point& b, const Point& p){
return (b.x - a.x) * (p.y - a.y) - (b.y - a.y) * (p.x - a.x);
}
T get_len(const Point& a){
return sqrt(dot(a, a));
}
T get_angle(const Point& a, const Point& b){
return acos(dot(a, b) / get_len(a) / get_len(b));
}
T area(const Point& a, const Point& b, const Point& c){
return cross(b - a, c - a);
}
Point rotate(const Point& a, T angle){ //两个点就 b - a (b按a转)
T dx = a.x * cos(angle) + a.y * sin(angle);
T dy = -a.x * sin(angle) + a.y * cos(angle);
return Point(dx, dy);
}
Point intersect(const Point& p, const Point& v, const Point& q, const Point& w){
Point u = p - q;
T t = cross(w, u) / cross(v, w);
return p + v * t;
}
T point_dist(const Point& a, const Point& b){
return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
T line_dist(const Point& a, const Point& b, const Point& p){
Point u = b - a, v = p - a;
return fabs(cross(u, v)) / get_len(u);
}
T get_slope(const Point& a, const Point& b){
if(b.y == a.y) return INF;
if(b.x == a.x) return 0;
return (b.y - a.y) / (b.x - a.x);
}
T circle_intersect(const Point& p1, const Point& p2, const T r1, const T r2){
ld d = sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y));
if(d > r1 + r2 || d + chmin(r1, r2) <= chmax(r1, r2)){
return 0;
}
else if(d == r1 + r2){
return 1;
}
else{
return 2;
}
}
T seg_dist(const Point& a, const Point& b, const Point& p){
if(a == b){
return get_len(p - a);
}
Point u = b - a, v = p - a, w = p - b;
if(sign(dot(u, v)) < 0){
return get_len(v);
}
if(sign(dot(u, w)) > 0){
return get_len(w);
}
return line_dist(a, b, p);
}
Point projection(const Point& a, const Point& b, const Point& p){
Point v = b - a;
return a + v * dot(v, p - a) / get_len(v);
}
bool on_segment(const Point& a, const Point& b, const Point& p){
bool u = sign(cross(p - a, p - b)) == 0;
bool v = sign(dot(p - a, p - b)) <= 0;
return u && v;
}
bool seg_intersection(const Point& a1, const Point& a2, const Point& b1, const Point& b2){
T c1 = cross(a2 - a1, b1 - a1), c2 = cross(a2 - a1, b2 - a1);
T c3 = cross(b2 - b1, a2 - b1), c4 = cross(b2 - b1, a1 - b1);
return sign(c1) * sign(c2) <= 0 && sign(c3) * sign(c4) <= 0;
}
friend std::ostream &operator<<(ostream &os, Point p) {
return os << "(" << p.x << ", " << p.y << ")";
}
};
void solve(){
int n, k;
cin >> n >> k;
vector<ld> a;
for(int i = 0; i < n; i++){
ld x, y;
cin >> x >> y;
a.pb(atan2(y, x));
}
sort(a.begin(), a.end());
for(int i = 0; i < n; i++){
a.pb(a[i] + 2 * pi);
}
cout << setprecision(20);
if(n == 1){
cout << 2 * pi << endl;
return;
}
ld qwq = 0;
for(int i = k; i < 2 * n; i++){
qwq = chmax(qwq, fabs(a[i] - a[i - k]));
}
cout << qwq << endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t = 1;
cin >> t;
while(t--){
solve();
}
return 0;
}
这程序好像有点Bug,我给组数据试试?
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 3928kb
input:
5 1 1 0 1 8 2 1 0 1 1 0 1 -1 1 -1 0 -1 -1 0 -1 1 -1 4 2 -1 1 0 1 0 2 1 1 4 2 -1000000000 0 -998244353 1 998244353 1 1000000000 0 3 1 0 1 0 2 0 -1
output:
6.283185307179586232 1.5707963267948966196 5.4977871437821379226 3.1415926545915517283 3.1415926535897932385
result:
ok 5 numbers
Test #2:
score: 0
Accepted
time: 51ms
memory: 3936kb
input:
10000 16 1 -10 -6 -5 -6 -4 9 -2 5 -2 10 1 -7 1 -5 1 6 3 1 4 -9 6 -10 6 -3 6 1 8 -5 8 -4 9 -4 17 4 -9 2 -8 -4 -8 -3 -8 -1 -6 -2 -6 -1 -6 8 -5 -8 -5 10 -4 8 -2 -8 4 -9 4 0 5 -3 8 -5 9 -2 10 10 10 6 -7 2 -4 6 -2 -7 -2 -1 -1 7 1 -9 1 8 3 -4 7 -4 9 -2 14 3 -9 10 -8 -10 -8 -8 -6 -7 -6 -5 -1 -7 -1 -2 0 -1 ...
output:
1.6929914974862514286 2.5748634360662868911 4.6527582672535202236 2.7726331073839365288 5.7427658069090020765 4.8576989910203917395 3.4198923125949043452 2.8127999620848386142 6.283185307179586232 6.283185307179586232 5.1172807666697730363 6.1467827027786388037 3.8420890235375193523 2.34249671681947...
result:
ok 10000 numbers
Test #3:
score: 0
Accepted
time: 37ms
memory: 3848kb
input:
10000 19 7 -10 -6 -10 5 -3 0 -2 -5 -1 1 -1 6 0 3 0 7 1 9 3 -3 3 3 3 8 4 -1 5 8 6 -3 7 -5 7 4 8 10 9 -5 15 15 -9 -1 -8 6 -7 9 -6 -3 -4 -9 -1 -3 -1 8 1 -8 1 -7 3 -2 3 1 6 -9 7 -10 7 0 10 -9 10 3 -7 -1 -6 -2 -6 10 -5 2 -4 2 -3 -7 -2 -9 1 -3 3 4 7 7 15 4 -8 -8 -8 8 -7 0 -7 10 -6 -7 -5 6 -1 -3 -1 0 1 -2 ...
output:
3.9269908169872413031 6.2831853071795862324 3.3602615994637352009 2.6779450445889871227 3.7703889400052259481 1.7625844687816016841 3.8402524783112561913 5.4977871437821381672 2.0344439357957027354 1.8157749899217607735 4.3471875305965168223 6.1412882525754223092 5.1760365893854957289 5.465540261346...
result:
ok 10000 numbers
Test #4:
score: 0
Accepted
time: 47ms
memory: 3920kb
input:
10000 18 12 -10 -4 -10 7 -8 -10 -7 -4 -6 5 -6 7 -5 0 -2 -7 -1 2 -1 10 0 2 1 1 3 -2 5 3 5 5 6 -3 8 -3 9 -2 10 1 -10 -9 -7 -7 -5 2 -4 -7 -3 1 3 1 3 3 5 -4 9 2 9 6 11 2 -8 1 -8 6 -7 -2 -6 0 -5 0 -1 -9 2 -8 3 5 6 0 10 -2 10 6 20 9 -10 -6 -10 6 -9 -8 -7 5 -6 -4 -4 -8 -2 -10 -2 -3 -2 4 -1 1 2 -5 3 -2 5 -6...
output:
4.909784540234570371 1.9756881130799800426 1.9868608325187193399 3.9269908169872413031 3.6977588837102459722 6.283185307179586232 6.1412882525754223092 6.193871314186364027 5.805354252187471377 6.2528915472608111305 5.7288778109780350025 3.090091842638567516 1.8925468811915388127 5.63418974818308535...
result:
ok 10000 numbers
Test #5:
score: 0
Accepted
time: 55ms
memory: 3916kb
input:
10000 19 7 -10 -1 -8 2 -7 -10 -6 6 -4 7 -3 -5 -3 1 -3 8 -2 4 -1 -7 0 -8 0 9 1 -10 2 1 2 3 3 5 6 -4 10 2 10 3 14 10 -8 2 -6 0 -5 -10 -5 10 -4 7 -3 -6 -2 -6 1 4 1 6 2 -1 3 -6 8 -4 9 -10 10 -1 12 8 -9 5 -7 2 -4 2 0 -2 0 5 1 6 3 2 4 9 5 5 7 -6 9 -9 9 2 19 12 -10 -10 -10 2 -9 -6 -8 2 -7 -5 -6 8 -4 1 -1 -...
output:
3.2393195609485119695 5.2757052418766577561 5.300391583932257164 5.387129922608242276 5.8883941874798249603 4.1173193566791484437 1.1383885512243587792 1.5152978215491797838 6.1476575931940854996 6.1588303126328247969 2.5748634360662868909 5.9401613667588828347 1.6085142792617608343 4.60994512687756...
result:
ok 10000 numbers
Test #6:
score: 0
Accepted
time: 45ms
memory: 3876kb
input:
10000 11 10 -10 -1 -9 4 -9 10 -7 -7 -5 4 -4 -1 -2 -10 0 -7 0 5 3 3 3 5 12 12 -9 6 -9 8 -3 -2 -2 2 0 -4 1 0 2 -3 3 5 5 -2 7 -1 10 3 10 9 14 12 -10 0 -9 -3 -9 1 -9 10 -8 -1 -8 7 -6 -1 -1 -6 -1 2 1 -1 3 -7 4 9 9 -3 10 1 10 4 -9 -3 -7 -1 -6 -10 -3 -2 -3 7 2 -2 2 3 5 2 6 9 9 6 10 2 -9 -9 -9 6 -8 3 -5 -9 ...
output:
6.1378752965438841049 6.283185307179586232 6.1180366297649596387 3.2003484763055159313 2.653756214930150801 6.2537820189755811166 3.6052402625905991098 3.5598169831690223397 1.5091461561556375839 5.9275494228788264315 6.2587998980068676952 2.6224465393432702868 4.3938333032966227836 5.49778714378213...
result:
ok 10000 numbers
Test #7:
score: 0
Accepted
time: 52ms
memory: 3992kb
input:
10000 14 1 -100 13 -96 -31 -82 -92 -77 -98 -50 1 -14 -57 -14 -31 -11 64 -8 75 9 68 25 100 54 -36 59 13 93 31 19 19 -76 -39 -60 95 -51 18 -39 11 -21 -46 -6 -94 -5 83 -3 -34 -3 72 0 -55 3 79 14 17 23 -88 32 37 50 70 61 -5 62 -43 84 -100 97 -50 13 7 -99 -63 -68 -87 -24 62 -20 -18 -2 -66 7 -49 13 -21 15...
output:
1.2713093974612791606 6.2831853071795862324 5.2225147207364986668 6.00306570356891743 3.9258721354646791898 5.5465289950920695127 3.2103149237117230041 3.0399300499237231388 4.2275317817944264211 3.0320196657368766768 2.1912152338181902821 3.0390080903677410139 4.33132715063550333 6.2831853071795862...
result:
ok 10000 numbers
Test #8:
score: 0
Accepted
time: 49ms
memory: 4132kb
input:
100 1413 755 -30 -30 -30 -28 -30 -27 -30 -26 -30 -21 -30 -12 -30 -10 -30 -8 -30 -5 -30 -1 -30 2 -30 4 -30 7 -30 9 -30 17 -30 19 -30 20 -30 23 -30 24 -30 30 -29 -29 -29 -23 -29 -15 -29 0 -29 4 -29 5 -29 9 -29 10 -29 11 -29 12 -29 14 -29 16 -29 17 -29 22 -29 27 -29 28 -28 -28 -28 -25 -28 -23 -28 -22 -...
output:
3.5891126287469628734 2.9797552223513703142 0.28379410920832760074 2.0350277068910931422 4.8879811423348698569 1.0040671092713902717 4.74570997626293681 5.3255963292591988979 4.3102749647329268745 5.6033836794138302691 1.579805092085313533 4.3296454705391140896 5.5472220967940915502 1.46013910562100...
result:
ok 100 numbers
Test #9:
score: 0
Accepted
time: 53ms
memory: 4472kb
input:
20 9045 8319 -1000 -986 -1000 -683 -1000 -430 -1000 -292 -1000 53 -1000 667 -999 -855 -999 -350 -999 -174 -999 -51 -999 -43 -999 235 -999 465 -999 530 -998 -997 -998 -311 -998 21 -998 44 -998 182 -997 -313 -997 -195 -997 -13 -997 412 -997 425 -996 -542 -996 -348 -996 -126 -996 -59 -996 -40 -996 84 -...
output:
5.9115110039040262295 3.7438685151377115287 2.5384828583153473446 2.1599673588578873094 4.295037709572344362 4.7716744747961826441 4.6824078126019358765 5.0789843941745744238 1.6008018214106639172 3.3404025456367047319 3.3687925282503489637 2.1130160282300615745 4.8553994101326698697 4.3240010532705...
result:
ok 20 numbers
Test #10:
score: 0
Accepted
time: 62ms
memory: 13032kb
input:
1 166347 18723 -1000 -979 -1000 -975 -1000 -928 -1000 -914 -1000 -898 -1000 -889 -1000 -876 -1000 -873 -1000 -858 -1000 -840 -1000 -838 -1000 -801 -1000 -783 -1000 -744 -1000 -738 -1000 -733 -1000 -713 -1000 -712 -1000 -695 -1000 -689 -1000 -680 -1000 -675 -1000 -671 -1000 -646 -1000 -643 -1000 -608...
output:
0.85144917898051572167
result:
ok found '0.8514492', expected '0.8514492', error '0.0000000'
Test #11:
score: 0
Accepted
time: 57ms
memory: 11752kb
input:
1 154903 84960 -1000 -979 -1000 -965 -1000 -956 -1000 -945 -1000 -920 -1000 -901 -1000 -878 -1000 -860 -1000 -858 -1000 -709 -1000 -693 -1000 -648 -1000 -619 -1000 -602 -1000 -579 -1000 -474 -1000 -473 -1000 -454 -1000 -443 -1000 -427 -1000 -407 -1000 -403 -1000 -384 -1000 -351 -1000 -279 -1000 -244...
output:
3.5389266853831661632
result:
ok found '3.5389267', expected '3.5389267', error '0.0000000'
Test #12:
score: 0
Accepted
time: 62ms
memory: 12380kb
input:
1 158037 96343 -1000 -1000 -1000 -905 -1000 -881 -1000 -833 -1000 -804 -1000 -803 -1000 -782 -1000 -775 -1000 -765 -1000 -759 -1000 -756 -1000 -748 -1000 -722 -1000 -674 -1000 -669 -1000 -630 -1000 -610 -1000 -573 -1000 -443 -1000 -411 -1000 -409 -1000 -403 -1000 -388 -1000 -366 -1000 -349 -1000 -33...
output:
3.9720287783258806818
result:
ok found '3.9720288', expected '3.9720288', error '0.0000000'
Test #13:
score: 0
Accepted
time: 63ms
memory: 4004kb
input:
10000 17 12 -853202371 684059854 -659446544 -924219854 -418025687 117998679 -399757126 -365708913 -331597239 -270896799 -204989763 869548983 -118492298 963842298 -77481232 672198731 45930201 -58234380 52605147 -900097542 78371985 940503934 235210685 595759114 391284089 234315077 416229789 -827244230...
output:
5.3985251100343522 5.3739078748564233787 1.1735781728741618258 1.5443652595083858479 3.77828864940306832 3.5704715868525046404 6.2829748588361585384 5.0959252028151004934 2.9875782465508503932 2.3055665058015290742 3.390784164182034681 5.7854732381281326432 4.8109636122639644982 0.956757418042079550...
result:
ok 10000 numbers
Test #14:
score: 0
Accepted
time: 61ms
memory: 3944kb
input:
1000 133 108 -994106086 710243426 -991027749 -548437545 -983318226 -917527783 -943673956 -368162275 -935819096 616077188 -928022346 487569673 -924213856 -369318351 -914827619 426646545 -883935180 590882141 -870015071 -270471333 -834927107 -211343853 -829266515 354007200 -788041913 -60481736 -7822837...
output:
5.7428017921431953247 1.915364239841793829 3.8043457981080069518 1.7919162705311299116 3.1695206706352034908 6.0786462146156016104 3.7860674595106412509 3.6659690726878560014 6.2265834529704455688 5.902152192610390008 5.9443157092956764461 0.71516768704310207687 3.8315742529771998947 1.2228457184603...
result:
ok 1000 numbers
Test #15:
score: 0
Accepted
time: 58ms
memory: 4028kb
input:
100 1367 924 -999416811 990355566 -997656126 346133696 -997071616 -657387469 -996176051 12622726 -995720693 334093112 -995478093 891631278 -994503890 341858449 -994297596 499383911 -993234202 533518057 -991636838 -4170504 -990563582 -407186200 -989454027 653116272 -989132124 -780605454 -988073521 -1...
output:
4.5051534906176891092 2.7125589326274781839 5.8396785809819666689 6.0229771114526152753 0.4616060431014163964 0.98699123321252273913 1.3219708488343231984 1.9258417458380594817 5.5086083533499106192 4.6463553312978787633 2.2876774102077065728 2.1848725877963294079 4.8094091918068386663 0.47707899024...
result:
ok 100 numbers
Test #16:
score: 0
Accepted
time: 52ms
memory: 5016kb
input:
10 13806 4955 -999669776 933068103 -999542354 721337508 -999499427 357140594 -999429088 -925180511 -999334813 -145726169 -999291694 -886327684 -999281647 811188099 -999145269 860687107 -998961821 -979442436 -998769313 446186367 -998591455 658309173 -998539751 -569480843 -998479467 279850955 -9984754...
output:
2.4170804680339780441 6.1611922290787267233 3.9600203768422350063 3.9943617929045931989 2.5515508361555201246 0.52272383678099888099 4.0978438278542292711 6.210382663158928672 5.9817280292539656301 0.77722368589060050531
result:
ok 10 numbers
Test #17:
score: 0
Accepted
time: 45ms
memory: 8624kb
input:
1 112596 94970 -999980219 399324466 -999932413 952114487 -999894556 -951211102 -999891030 -996222974 -999864824 412806264 -999853190 -269700371 -999845814 -23906803 -999841507 -459154880 -999825178 716247149 -999761774 -154047106 -999729655 -171480333 -999709604 -666447277 -999704754 -22442485 -9996...
output:
5.4425938793438515557
result:
ok found '5.4425939', expected '5.4425939', error '0.0000000'
Test #18:
score: 0
Accepted
time: 77ms
memory: 13040kb
input:
1 161568 13252 -999991243 -113889211 -999976572 -361096764 -999970140 -505012445 -999960654 600963873 -999959339 -269932510 -999956568 734634576 -999941447 716485764 -999940305 64397798 -999939982 746532931 -999939921 995002380 -999932747 185078659 -999927136 585216518 -999914684 898656539 -99990452...
output:
0.64247459068649739053
result:
ok found '0.6424746', expected '0.6424746', error '0.0000000'
Test #19:
score: 0
Accepted
time: 88ms
memory: 11476kb
input:
1 186192 126483 -999998234 974001047 -999976292 -133179660 -999967957 112862981 -999957851 70030467 -999951528 743907713 -999931316 66002112 -999907988 888991267 -999905412 470798211 -999903986 -103943462 -999900422 255729004 -999898174 917068198 -999884392 -183592605 -999880179 -650076162 -99987469...
output:
4.4012456841190097578
result:
ok found '4.4012457', expected '4.4012457', error '0.0000000'
Test #20:
score: 0
Accepted
time: 54ms
memory: 4020kb
input:
1000 133 9 -10 -839744900 -10 -620593257 -10 -322048342 -10 578093727 -10 898998949 -9 -833794004 -9 -704882916 -9 -570204575 -9 -506146571 -9 -109555290 -9 309734100 -9 396668416 -8 -928874025 -8 376566668 -8 596463598 -8 600491164 -8 894775141 -7 -281322833 -7 49984651 -7 154512939 -7 205573228 -7...
output:
3.1415925828877798304 6.2831852482136781096 3.1415926144249784126 3.1415911740814419072 6.2831852702917532997 6.2831852953163275389 3.1415926492294253601 6.2831853036700987857 3.1415926401615581168 6.2831852506759280439 6.283185281648257469 3.1415927591869401911 3.1415926453705566193 3.1415926237559...
result:
ok 1000 numbers
Test #21:
score: 0
Accepted
time: 49ms
memory: 6660kb
input:
5 23120 8224 -10 -999575056 -10 -997485895 -10 -995458183 -10 -986953157 -10 -985268102 -10 -983223383 -10 -980910524 -10 -980404283 -10 -973605147 -10 -972441960 -10 -972440422 -10 -969122114 -10 -965754004 -10 -964812113 -10 -964558462 -10 -963159275 -10 -962972564 -10 -962085557 -10 -961552443 -1...
output:
3.1415926423513885965 3.1415926312424425348 3.1415926068007826331 3.1415926493953187674 6.2831852722069223274
result:
ok 5 numbers
Test #22:
score: 0
Accepted
time: 30ms
memory: 8260kb
input:
1 99995 60000 1 100001 1 100002 1 100003 1 100004 1 100005 1 100006 1 100007 1 100008 1 100009 1 100010 1 100011 1 100012 1 100013 1 100014 1 100015 1 100016 1 100017 1 100018 1 100019 1 100020 1 100021 1 100022 1 100023 1 100024 1 100025 1 100026 1 100027 1 100028 1 100029 1 100030 1 100031 1 10003...
output:
6.2831853069018177133
result:
ok found '6.2831853', expected '6.2831853', error '0.0000000'
Extra Test:
score: 0
Extra Test Passed