题解:P14752 Hit or not?
题意
有一个
分析
注意到:虽然取样的点越多,凸多边形近似越精确,但是多边形的顶点数实际很小。
所以我们可以暴力一点,
首先记录每个点的标号,然后按照
然后对于一条边,我们的要求是由两个相邻的点构成(注意第一个和最后一个也是相邻的)。如果这条边会被经过,那么
实现
#include<bits/stdc++.h>
using namespace std;
const int N = 3010;
struct point
{
int x,y,id;
bool operator < (const point &w)
{
return y < w.y;
}
}a[N];
int main()
{
int n,k;
cin>>n;
for(int i = 1; i <= n; i ++) cin>>a[i].x>>a[i].y,a[i].id = i;
sort(a + 1,a + n + 1);
cin>>k;
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= n; j ++)
{
if((abs(a[i].id - a[j].id) == 1 || abs(a[i].id - a[j].id) == n - 1) && min(a[i].x,a[j].x) < k && k < max(a[i].x,a[j].x))
{
cout<<a[i].id<<' '<<a[j].id<<endl;
return 0;
}
}
return 0;
}