提交时间:2026-01-17 14:16:54
运行 ID: 39626
#include<bits/stdc++.h> #define int long long #define PII pair<int,int> #define fir first #define sec second using namespace std; const int N=1e3+7,L=1e5+7; int n,m,k; string S; int U1,U2,L1,L2,cnt; map<PII,bool> mp; PII p[L]; int d[N][N]; inline void Add(int _X1,int _Y1,int _X2,int _Y2){ d[_X1][_Y1]++; d[_X2+1][_Y1]--; d[_X1][_Y2+1]--; d[_X2+1][_Y2+1]++; } inline void slv(){ cin>>n>>m>>k>>S; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)d[i][j]=0; mp.clear(); cnt=0; int delx=0,Mxx=0,Mnx=0,dely=0,Mxy=0,Mny=0; for(auto ch:S){ if(ch=='U')delx--,Mnx=min(Mnx,delx); if(ch=='D')delx++,Mxx=max(Mxx,delx); if(ch=='L')dely--,Mny=min(Mny,dely); if(ch=='R')dely++,Mxy=max(Mxy,dely); if(!mp.count(PII(delx,dely)))p[++cnt]=PII(delx,dely); } U1=-Mnx+1,U2=n-Mxx; L1=-Mny+1,L2=m-Mxy; int S=(U2-U1+1)*(L2-L1+1); if((U1>U2)||(L1>L2)){ cout<<(!k?n*m:0)<<endl; return; } int Ans=0; for(int i=1;i<=cnt;i++){ int dx=p[i].fir,dy=p[i].sec; Add(U1+dx,L1+dy,U2+dx,L2+dy); } for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){ d[i][j]+=d[i-1][j]+d[i][j-1]-d[i-1][j-1]; } for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){ Ans+=(d[i][j]==S-k); } cout<<Ans<<endl; return; } signed main(){ #ifndef ONLINE_JUDGE freopen("blackhole.in","r",stdin); freopen("blackhole.out","w",stdout); #endif int T;cin>>T; while(T--)slv(); }