QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#863022 | #9668. Isoball: 2D Version | AlinteckQR | WA | 0ms | 4096kb | C++20 | 3.0kb | 2025-01-19 11:48:16 | 2025-01-19 11:48:17 |
Judging History
answer
#include <iostream>
#include <math.h>
#include <numbers>
using namespace std;
long double PI = std::numbers::pi;
long int n;
double xo, yo, r, vx, vy, ix1, iy1, ix2, iy2;
double trans(double dx1, double dy1, double dx2, double dy2)
{
double res = atan2(dy2 - dy1, dx2 - dx1);
if (res < 0)
{
res += 2 * PI;
}
return atan2(dy2 - dy1, dx2 - dx1);
}
double tk(double tx1, double ty1, double tx2, double ty2)
{
return (ty2 - ty1) / (tx2 - tx1);
}
int main()
{
cin >> n;
while (n--)
{
cin >> xo >> yo >> r >> vx >> vy >> ix1 >> iy1 >> ix2 >> iy2;
if (ix2 - ix1 < 2 * r || iy2 - iy1 < 2 * r)
{
cout << "No" << endl;
continue;
}
double nx1 = ix1 + r;
double ny1 = iy1 + r;
double nx2 = ix2 - r;
double ny2 = iy2 - r;
double xt, yt;
if (vx != 0)
{
xt = xo + 1000000;
yt = yo + 1000000 * vy / vx;
}
else
{
xt = xo;
yt = yo + 1000000;
}
// cout <<xt<<" " <<yt<<endl;
double dt = trans(xo, yo, xt, yt);
double d11 = trans(xo, yo, nx1, ny1);
double d12 = trans(xo, yo, nx1, ny2);
double d21 = trans(xo, yo, nx2, ny1);
double d22 = trans(xo, yo, nx2, ny2);
/*cout << dt / PI << endl;
cout << d11 / PI << endl;
cout << d12 / PI << endl;
cout << d21 / PI << endl;
cout << d22 / PI << endl;*/
if (ny1 <= yo && yo <= ny2)
{
// cout << "?" << endl;
if (xo < nx1)
{
if ((d11 <= dt && d11 <= 2) || (dt <= d12 && dt >= 0))
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
}
else if (nx2 < xo)
{
if (dt <= d11 && dt >= d12)
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
}
else
{
cout << "Yes" << endl;
}
}
else if (yo < ny1)
{
// cout<<"?"<<endl;
if (max(max(d11, d22), max(d12, d21)) >= dt && min(min(d11, d22), min(d12, d21)) <= dt)
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
}
else if (yo > ny2)
{
// cout<<"? "<<endl;
if (max(max(d11, d22), max(d12, d21)) >= dt && min(min(d11, d22), min(d12, d21)) <= dt)
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
}
}
return 0;
}
詳細信息
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 4096kb
input:
5 0 0 1 1 0 2 -2 6 2 0 0 1 1 0 2 0 6 2 0 0 1 1 1 1 1 3 3 0 0 1 -1 -1 1 1 3 3 0 0 1 -1 1 -5 -5 5 5
output:
Yes No Yes Yes Yes
result:
wrong answer 4th lines differ - expected: 'No', found: 'Yes'