为啥错了4个
查看原帖
为啥错了4个
1122530
elpsconr楼主2025/1/5 17:31

感觉对的很,结果错了4个,不知道是哪里的问题

#pragma GCC optimize("Ofast")
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int,int>
#define tul array<__int128,3>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define rep_(i,a,b) for(int i=a;i>=b;--i)
#define all(x) x.begin(),x.end()
#define bp(x) __builtin_popcountll(x)
#define ctz(x) __builtin_ctzll(x)
#define cy cout<<"Yes"<<endl
#define cn cout<<"No"<<endl
#define lc (rt<<1)
#define rc (rt<<1|1)
mt19937_64 rnd(time(0));
const int N=3e5+5,yyx=998244353;
vector<int> to[N];
int n,m,a[N];
inline int mod(int x){
  return (x%yyx+yyx)%yyx;
}
inline int cmin(int &x,int y){
  return x>y?x=y,1:0;
}
inline int cmax(int &x,int y){
  return x<y?x=y,1:0;
}
PII e[N];
int dp[N][30],f[N][30];
struct ST{
  vector<int> lg;
  ST(int n){
    rep(i,0,n) rep(j,0,29) dp[i][j]=f[i][j]=0;
    lg.resize(n+1,0);
    for(int i=1;i<=n;++i) dp[i][0]=e[i].second,f[i][0]=e[i].second;
    for(int i=2;i<=n;++i) lg[i]=lg[i>>1]+1;
    for(int j=1;j<=lg[n];++j){
      for(int i=1;i+(1<<j)-1<=n;++i){
        dp[i][j]=max(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);
      }
    }
    for(int j=1;j<=lg[n];++j){
      for(int i=1;i+(1<<j)-1<=n;++i){
        f[i][j]=min(f[i][j-1],f[i+(1<<(j-1))][j-1]);
      }
    }
  }
  int getmax(int l,int r){
    if(l>r) return 0;
    int k=lg[r-l+1];
    return max(dp[l][k],dp[r-(1<<k)+1][k]);
  }
  int getmin(int l,int r){
    if(l>r) return 0;
    int k=lg[r-l+1];
    return min(f[l][k],f[r-(1<<k)+1][k]);
  }
};
inline void solve(){
  cin>>n>>m;
  set<PII> t;
  int cnt=0;
  rep(i,1,m){
    int r,c;char ch;cin>>r>>c>>ch;
    if(ch=='B') e[++cnt]={r,c};
    else t.insert({r,c});
  }
  sort(e+1,e+1+cnt);
  ST st(cnt+1);
  for(auto [x,y]:t){
    int p=lower_bound(e+1,e+1+cnt,(PII){x,y})-e;
    //cout<<p<<endl;
    int d=st.getmax(min(p,cnt),cnt);
    if(d>=y){
        cn;return;
    }
  }
  cy;
}
signed main(){
  cin.tie(0)->sync_with_stdio(0);
  //freopen("D://321//in.txt","r",stdin);
  //freopen("D://321//out.txt","w",stdout);
  int _=1;
  //cin>>_;
  while(_--)
  solve();
  return 0;
}
2025/1/5 17:31
加载中...