D - Diagonal Separation(思维/排序)
题目链接:https://atcoder.jp/contests/abc386/tasks/abc386_d
题意:
给你一个表格,表格上已经填充了一些黑块和白块,让你判断能否涂色至黑块总是在白块的左上角
思路:
每个点离散化,按行为第一关键字,列为第二关键字排序。即从上至下找到白块便记录其最小的y,后来的黑块在这个白块后面或者下面(因为白块和黑块都经过排序),判断后来的黑块y是不是大于或等于此时白块最小的y
#include<bits/stdc++.h>
using namespace std;
const int maxn =2e5+5;
struct point{
int x,y;
char c;
}a[maxn];
int n;
int m;
bool cmp(point a,point b)
{
if(a.x!=b.x)return a.x<b.x;
return a.y<b.y;
}
signed main()
{
ios::sync_with_stdio(false),cin.tie(0);
cin>>n>>m;
for(int i=0;i<m;i++)
{
cin>>a[i].x>>a[i].y>>a[i].c;
}
sort(a,a+m,cmp);
int wy=n+1;
bool f=true;
for(int i=0;i<m;i++)
{
if(a[i].c=='W')wy=min(wy,a[i].y);
else
{
if(a[i].y>=wy)
{
f=false;
}
}
}
if(f)cout<<"Yes";
else cout<<"No";
return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战