求助(改了2小时都没改出来)
  • 板块灌水区
  • 楼主dsj2012
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/12/24 21:33
  • 上次更新2024/12/25 14:36:34
查看原帖
求助(改了2小时都没改出来)
996107
dsj2012楼主2024/12/24 21:33

P8073 [COCI2009-2010#7] BAKICE

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
char c[105][105];
int cnt;
struct rz{
	int x,y;
}l[10005],r[10005];
int le,re;
struct pi{
	double x;
	rz a,b;
}a[10005];
bool cmp(pi x,pi y){
	return x.x < y.x;
}
double ajld(int x_1,int y_1,int x_2,int y_2){
	return sqrt((x_1 - x_2) * (x_1 - x_2) + (y_1 - y_2) * (y_1 - y_2));
}
int vis[105][105];
int dis[105][105];
signed main(){
	cin >> n >> m;
	for(int i = 1 ; i <= n ; i ++){
		for(int j = 1 ; j <= m ; j ++){
			cin >> c[i][j];
			if(c[i][j] == 'L'){
				le ++;
				l[le].x = i;
				l[le].y = j;
			}
			if(c[i][j] == 'X'){
				re ++;
				r[re].x = i;
				r[re].y = j;
			}
		}
	}
	for(int i = 1 ; i <= re ; i ++){
		for(int j = 1 ; j <= le ; j ++){
			cnt ++;
			a[cnt].x = ajld(r[i].x , r[i].y , l[j].x , l[j].y);
			a[cnt].a.x = r[i].x;
			a[cnt].a.y = r[i].y;
			a[cnt].b.x = l[j].x;
			a[cnt].b.y = l[j].y;
		}
	}
	int ans = 0;
	sort(a + 1 , a + 1 + cnt , cmp);
	for(int i = 1 ; i <= cnt ; i ++){
		if(vis[a[i].a.x][a[i].a.y] > 0)continue;
		if(vis[a[i].b.x][a[i].b.y] == 0){
			vis[a[i].b.x][a[i].b.y] = a[i].x;
			vis[a[i].a.x][a[i].a.y] ++;
			continue;
		}
		if(a[i].x >= vis[a[i].b.x][a[i].b.y] && !dis[a[i].b.x][a[i].b.y]){
			dis[a[i].b.x][a[i].b.y] = 1;
			ans ++;
		}
		vis[a[i].a.x][a[i].a.y] ++;
	}
	cout << ans;
	return 0;
}
2024/12/24 21:33
加载中...