求助,玄关
查看原帖
求助,玄关
840195
juruolaidayang_AKIOI楼主2024/7/3 13:18
描述

你手里拿着很多字母牌,在一个方格棋盘上下棋,棋盘的中心是坐标(0,0),你把字母牌在棋盘上摆放,你规定一个美丽的方格是指中心也是坐标(0,0),且方格中不存在相同字母的牌,给你一个摆放完的棋盘,问是美丽方格中最多多少张牌?

输入描述

一行,一个整数n,表示一共摆了多少张牌
2~n+1行,每行三个值,x,y,c,分别表示坐标(x,y),及摆放的牌字母c

输出描述

美丽方格中最多多少张牌

用例输入 1 

5
2 2 a
-1 -2 b
-4 4 d
-3 1 c
3 -3 a
用例输出 1 

2
#include <bits/stdc++.h>
using namespace std;
struct node{
	int x,y;
	char c;
}a[1000005];
int n;
bool check(int m){
	bool v[130]={};
	for(int i=1;i<=n;i++){
		if(a[i].x>=-m&&a[i].x<=m&&a[i].y>=-m&&a[i].y<=m){
			if(v[(int)a[i].c]) return 0;
			v[(int)a[i].c]=1;
		}
	}
	return 1;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].x>>a[i].y>>a[i].c;
	}
	int l=0,r=1000000,ans=0;
	while(l<r){
		int mid=(l+r+1)>>1;
		if(check(mid)) l=mid;
		else r=mid-1;
	}
	for(int i=1;i<=n;i++){
		if(a[i].x>=-l&&a[i].x<=l&&a[i].y>=-l&&a[i].y<=l){
			ans++;
		}
	}
	cout<<ans;
	return 0;
}

求大佬们帮我找出我代码的问题,样例过了但WA了

2024/7/3 13:18
加载中...