本文共 660 字,大约阅读时间需要 2 分钟。
其实这道题很简单,就是仔细观察同类点的特征,它们分布在直线的某一侧,而我们知道直线一般方程:ax+by+c=0,那么点位于直线的那一侧,用判别式z=ax+by+c来判断当z>0时,或者当z<0时点的位置在哪里。对于本题,无需去判断点在直线的上方还是下方,直接判断相同的点是否在同一侧就可以了
#includeusing namespace std;struct dot{ int x,y; char tp; }d[1010];int main(){ int m,n,a0,a1,a2,t;//三个参数,t是判别式值 cin>>n>>m; for(int i=0;i >d[i].x>>d[i].y>>d[i].tp; for(int i=0;i >a0>>a1>>a2; int t0=a0+a1*d[0].x+a2*d[0].y;char c0=d[0].tp; int flag=0; for(int j=1;j 0&&t0>0&&c0!=d[j].tp) ||(t<0&&t0>0&&c0==d[j].tp)||(t>0&&t0<0&&c0==d[j].tp)){ //不成立的四个条件,不要漏了 flag=1;break; } } if(flag==0) cout<<"Yes\n"; else cout<<"No\n"; } return 0;}
转载地址:http://icwzi.baihongyu.com/