WHY D
  • 板块灌水区
  • 楼主Guoguo2013
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/12/28 22:05
  • 上次更新2024/12/29 11:27:33
查看原帖
WHY D
1070982
Guoguo2013楼主2024/12/28 22:05
#include<bits/stdc++.h>
#define int long long
#define PII pair< int, int >

using namespace std;

const int N = 2e5 + 5, mod = 998244353;
int n, m, cnt_b, cnt_w, max_w[N];
PII b[N], w[N];

template< typename T >inline void read(T &x){bool f=1;x=0;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') f=!f;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}x=(f?x:-x);return;}
template< typename T, typename ... L > void read(T &a , L && ... b) { read(a); read(b ...); }
int ksm(int a, int b, int p){int ans = 1;while(b){if(b & 1)ans =(ans*a)%p;b >>= 1;a = (a*a) % p;}return ans;}
int erfen(int x){
	int l = 0, r = cnt_w;
	while (l < r){
		int mid = l + r + 1 >> 1;
		if (x < w[mid].first) r = mid - 1;
		else l = mid;
	}
	return l;
}
signed main(){
//	freopen("a.in", "r", stdin);
//	freopen("a.out","w",stdout);
	read(n, m);
	for (int i = 1; i <= m; i++){
		int xx, yy;
		char op;
		read(xx, yy);
		cin >> op;
		if (op == 'B') b[++cnt_b] = {yy, xx};
		else w[++cnt_w] = {yy, xx};
	}
	sort(b + 1, b + cnt_b + 1);
	sort(w + 1, w + cnt_w + 1);
	for (int i = 1; i <= cnt_w; i++) max_w[i] = max(max_w[i-1], w[i].second);
	for (int i = 1; i <= cnt_b; i++){
		int j = erfen(b[i].first);
//		printf("%lld\n", j);
		if (j != 0 && max_w[j] <= b[i].second){
			printf("No");
			return 0;
		}
	}
	printf("Yes");
	return 0;
}

虽然感觉就挺弱智的做法,但也不至于 WA 24 吧

2024/12/28 22:05
加载中...