1. 程式人生 > 實用技巧 >CodeForces - 1184C1 Heidi and the Turing Test (Easy)

CodeForces - 1184C1 Heidi and the Turing Test (Easy)

昨天比賽做到這道題,因為把題目理解錯了,這道題怎麼改都不對QAQ 正確理解題意是做對題的第一步,題目中有很多坑做的時候請小心避讓。

題意:給你一個2到10的數,給出4n+1個座標,判斷是否在正方形的邊上,每條邊確保有n個點。(有且僅有一個點在在正方形內或正方形外)

(一開始用樣例理解題意,認為邊長是n+1所以全盤皆輸了)

思路:找到平行x和y軸上最大和最小的邊的位置,再進行逐一判斷。資料量不大,可暴力。

 1 #include<iostream>
 2 #include<string>
 3 #include<sstream>
 4 #include<set
> 5 #include<vector> 6 #include<map> 7 #include<algorithm> 8 #include<stdlib.h> 9 #include<cstdio> 10 #include<math.h> 11 #define ll long long 12 #define MOD 998244353 13 #define INF 0x3f3f3f3f 14 #define mem(a,x) memset(a,x,sizeof(a)) 15 #define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); 16
using namespace std; 17 const int N = 110; 18 19 struct node 20 { 21 int x,y; 22 int flag; 23 } no[N]; 24 25 int main() 26 { 27 int n,mi1,mi2,ma1,ma2; 28 int a[N],b[N]; 29 scanf("%d",&n); 30 for(int i = 0; i < 4 * n + 1; i ++) 31 { 32 scanf("%d%d",&no[i].x,&no[i].y);
33 a[i] = no[i].x; 34 b[i] = no[i].y; 35 } 36 sort(a,a+4*n+1); 37 sort(b,b+4*n+1); 38 /* 39 判斷最小值和最大值的這個地方需要注意注意再注意 40 不可以把第一個當作最小的,把最後一個當作最大的,會有特判樣例 41 由於每條邊上至少有n個點,只有一個點是不在邊上的, 42 所以第二個一定是最小的,倒數第二個一定是最大的 43 */ 44 mi1=a[1]; 45 ma1=a[4*n-1]; 46 mi2=b[1]; 47 ma2=b[4*n-1]; 48 //cout<<ma1<<' '<<mi1<<endl; 49 //cout<<ma2<<' '<<mi2<<endl; 50 for(int i = 0; i < 4 * n + 1; i ++) 51 { 52 if((no[i].x>mi1&&no[i].x<ma1&&no[i].y>mi2&&no[i].y<ma2)||no[i].x<mi1||no[i].x>ma1||no[i].y<mi2||no[i].y>ma2) 53 { 54 printf("%d %d\n",no[i].x,no[i].y); 55 break; 56 } 57 } 58 return 0; 59 }