为啥不对(ctj)
查看原帖
为啥不对(ctj)
774823
yuhaotian000楼主2025/7/26 16:31

标题引流,致歉。

#include <bits/stdc++.h>
#define int long long
using namespace std;
char c[400005];
int a[200005],b[200005];
signed main(){
  int t;
  cin>>t;
  while(t--){
    int n,m;
    cin>>n>>m;
    cin>>c;
    memset(a,0x3f,sizeof a);
    memset(b,0,sizeof b);
    int p=1,q=1;
    a[1]=1;
    b[1]=1;
    int cntd=0,cntr=0;
    for(int i=0;i<n+m-2;i++){
      if(c[i]=='D') cntd++;
      if(c[i]=='R') cntr++;
    }
    if(cntd>n-1||cntr>m-1){
      cout<<0<<endl;
      continue;
    }
    for(int i=0;i<n+m-2;i++){
      if(c[i]=='D'){
        q++;
      }else if(c[i]=='R'){
        p++;
      }else{
        if(cntd<m) p++,cntd++;
        else q++;
      }
      b[p]=max(b[p],q);
    }
    p=1,q=1;
    for(int i=0;i<n+m-2;i++){
      if(c[i]=='D'){
        q++;
      }else if(c[i]=='R'){
        p++;
      }else{
        if(cntr<n) q++,cntr++;
        else p++;
      }
      a[p]=min(a[p],q);
    }
    int ans=0;
    for(int i=1;i<=m;i++){
      if(a[i]<=b[i]){
        ans+=b[i]-a[i]+1;
      }
    }
    cout<<ans<<endl;
  }
}
2025/7/26 16:31
加载中...