回收站选址

回收站选址_第1张图片

思路 :  暴力枚举每一个点,然后看是否有满足题意的点并记录下来,再计算得分。

#include 
#include 
#include 
#include 
#include 
#include  
using namespace std ;
typedef long long LL;  
const LL inf = 0x3f3f3f3f3f3f3f3f;  
const LL maxn = 1e18+999 ; 
const int MAX = 55005 ;
int n ; 
typedef struct node {
	int x ; 
	int y ; 
}Point;
Point a[MAX] ; 
int b[10] ; 
int vis[MAX] ; 
int main () {
	cin >> n  ;
	for(int i = 1 ; i<=n ;i++ ) {
		cin >> a[i].x >>a[i].y ; 
	}
	
	for(int i = 1 ;i<=n;i++) {
		
		int x = a[i].x ; 
		int y = a[i].y ;
		int cnt = 0  ;  
		int u = 0 ; 
		for(int j = 1 ; j<=n ;j++ ){
			if(x  == a[j].x -1 && y == a[j].y) {
				cnt++ ; 
			}
			 if(x  == a[j].x  && y == a[j].y +1 ){
				cnt++ ; 
			}
			 if(x == a[j].x +1  && y == a[j].y) {
				cnt++ ; 
			}
			 if(x == a[j].x && y== a[j].y-1){
				cnt++ ; 
			}
			if (cnt == 4) {
				vis[i] = 1 ; 
			}
			else {
				vis[i] = 0 ;
			}
			
			
			 
		}
	}
	
	
	for(int i = 1 ; i<=n ;i++) {
		int u = 0 ;
		if(vis[i]){
			int x = a[i].x ;
			int y = a[i].y ; 
			for(int j = 1 ;j<=n ;j++){
				if(x == a[j].x -1 &&  y == a[j].y - 1) {
				u++ ; 
			}
			if(x == a[j].x -1 && y == a[j].y + 1 ) {
				u++ ; 
			}
			if(x == a[j].x +1 && y == a[j].y +1 ) {
				u++ ; 
			}
			if ( x == a[j].x +1 && y == a[j].y- 1 ) {
				u++ ; 
			}
				
			}
			b[u]++ ; 
			
		}
		
		
	}
	for(int i = 0 ; i<5 ;i++){
		cout<

 

你可能感兴趣的:(计算机上机复试)