Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
39624 22fhq 【S】T2 C++ 通过 100 60 MS 16032 KB 1573 2026-01-17 14:10:11

Tests(10/10):


#include<bits/stdc++.h> #define int long long using namespace std; void read(int &x){ x=0; char c=getchar(); bool neg=0; for(;!isdigit(c);c=getchar())neg=(c=='-'); for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48); if(neg)x=-x; } #define read2(a,b) read(a),read(b) #define read3(a,b,c) read2(a,b),read(c) int n,m,k,xl,xr,yl,yr,x,y; string s; int sum[1005][1005],res[1005][1005]; void slv(){ memset(sum,0,sizeof sum); memset(res,0,sizeof res); read3(n,m,k); cin>>s; x=y=0; xl=yl=1,xr=n,yr=m; for(char c:s){ if(c=='U')x--,xl=max(xl,1-x); if(c=='D')x++,xr=min(xr,n-x); if(c=='L')y--,yl=max(yl,1-y); if(c=='R')y++,yr=min(yr,m-y); } x=xr,y=yr; for(char c:s){ sum[x][y]=1; if(c=='U')x--; if(c=='D')x++; if(c=='L')y--; if(c=='R')y++; sum[x][y]=1; } int lx=xr-xl+1,ly=yr-yl+1; // cout<<lx<<" "<<ly<<endl; if(lx<=0||ly<=0){ if(k==0)cout<<n*m<<endl; else cout<<0<<endl; return; } for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)sum[i][j]=sum[i-1][j]+sum[i][j-1]+sum[i][j]-sum[i-1][j-1]; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)res[i][j]=sum[min(i+lx-1,n)][min(j+ly-1,m)]-sum[i-1][min(j+ly-1,m)]-sum[min(i+lx-1,n)][j-1]+sum[i-1][j-1]; int ans=0; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){ if(lx*ly-res[i][j]==k)ans++; } cout<<ans<<endl; } signed main(){ int T;read(T);while(T--) slv(); return 0; }


测评信息: