作者:阳光下的我们卍 | 来源:互联网 | 2023-10-11 09:21
题目测试数据9311A10A1-1A22B23B01A31B13B20A02-3-302-311代码#includeiostream#includecstdiousi
题目
测试数据 9 3 1 1 A 1 0 A 1 -1 A 2 2 B 2 3 B 0 1 A 3 1 B 1 3 B 2 0 A 0 2 -3 -3 0 2 -3 1 1
代码 #include "iostream" #include "cstdio" using namespace std; typedef long long ll ; struct point{ ll x; ll y; } a[ 1005 ] , b[ 1005 ] ; ll n, m; ll Tmp; bool solve ( ll n0, ll n1, ll n2, ll cnt , ll cot) { bool flag; ll f&#61; 0 ; for ( int i&#61; 1 ; i<&#61; cnt- 1 ; i&#43;&#43; ) { f&#61; n0&#43; n1* a[ i] . x&#43; n2* a[ i] . y; if ( i&#61;&#61; 1 ) { Tmp&#61; f; continue ; } if ( f* Tmp< 0 ) { return false ; } } for ( int i&#61; 1 ; i<&#61; cot- 1 ; i&#43;&#43; ) { f&#61; n0&#43; n1* b[ i] . x&#43; n2* b[ i] . y; if ( f* Tmp> 0 ) { return false ; } } return true ; } int main ( ) { cin>> n>> m; ll px, py, pt; ll cnt&#61; 0 ; ll cot&#61; 0 ; for ( int i&#61; 1 ; i<&#61; n; i&#43;&#43; ) { scanf ( "%lld %lld %c" , & px, & py, & pt) ; if ( pt&#61;&#61; &#39;A&#39; ) { cnt&#43;&#43; ; a[ cnt] . x&#61; px; a[ cnt] . y&#61; py; } else { cot&#43;&#43; ; b[ cot] . x&#61; px; b[ cot] . y&#61; py; } } ll n0, n1, n2; bool any[ 1000 ] &#61; { false } ; for ( int i&#61; 1 ; i<&#61; m; i&#43;&#43; ) { cin>> n0>> n1>> n2; any[ i] &#61; solve ( n0, n1, n2, cnt, cot) ; } for ( int i&#61; 1 ; i<&#61; m; i&#43;&#43; ) { if ( any[ i] ) printf ( "Yes\n" ) ; else printf ( "No\n" ) ; } }
相关思路 这个逻辑是简单的&#xff0c;就是将点按照AB分成两组&#xff0c;然后随便选一组的第一个&#xff0c;然后开始对比&#xff0c;出现错误就溜&#xff0c;判断对则要确保你溜不掉。 这个程序真是调的我服了&#xff0c;我真的要吐了&#xff0c;我一度怀疑我是个傻子&#xff0c;怀疑我是不是逻辑错了。结果没有就是代码写的不熟练&#xff0c;调程序调少了&#xff0c;too young too simple &#xff0c;之后多敲多积累吧。