2 条题解
-
3赵青海 (huhe) LV 7 SU @ 2021-8-7 20:58:04
C++ :
#include<bits/stdc++.h> #define IO ios::sync_with_stdio(0);cin.tie(0);cout.tie(0) using namespace std; inline int read() { char ch=getchar(); int f=1,x=0; while(!(ch>='0'&&ch<='9')){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();} return x*f; } const int maxn=1e3+5; struct rectangle{int h,l;}; int n,m,t[maxn][maxn]; char c; int getmaxv(int size,int buffer[]) { stack<rectangle>S; int maxv=0; buffer[size]=0; for(int i=0;i<=size;i++) { rectangle rect; rect.h=buffer[i]; rect.l=i; if(S.empty())S.push(rect); else { if(S.top().h<rect.h)S.push(rect); else { int target=i; while(!S.empty()&&S.top().h>=rect.h) { rectangle pre=S.top(); S.pop(); int area=pre.h*(i-pre.l); maxv=max(maxv,area); target=pre.l; } rect.l=target; S.push(rect); } } } return 3*maxv; } int main() { IO; cin>>n>>m; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cin>>c; c=='R'?t[i][j]=0:i==0?t[i][j]=1:t[i][j]=t[i-1][j]+1; } } int maxv=0; for(int i=0;i<n;i++)maxv=max(maxv,getmaxv(m,t[i])); printf("%d\n",maxv); return 0; }
-
12023-5-26 18:03:23@
思路:
这道题就是在直方图中的矩形里再多一个枚举 行就行了,下面是代码
AC代码:
#include<iostream> #include<stack> #include<string.h> #define IO ios::sync_with_stdio(0);cin.tie(0);cout.tie(0) #define int long long using namespace std; stack<int> st; int h[1005][1005],n,to,l[1005],r[1005],res,m; int get(int index){ int ans; while(!st.empty()) st.pop(); h[0][index]=-1; st.push(0); for(int i=1;i<=n;i++){ while(!st.empty()&&h[i][index]<=h[st.top()][index]) st.pop(); l[i]=st.top(); st.push(i); } while(!st.empty()) st.pop(); h[n+1][index]=-1; st.push(n+1); for(int i=n;i>=1;i--){ while(!st.empty()&&h[i][index]<=h[st.top()][index]) st.pop(); r[i]=st.top(); st.push(i); } ans=0; for(int i=1;i<=n;i++){ ans=max(ans,(r[i]-l[i]-1)*h[i][index]); } return ans; } signed main(){ IO; cin>>m>>n; char x; for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ cin>>x; if(x=='F') h[j][i]=h[j][i-1]+1; else h[j][i]=0; } } int maxx =-1; for(int i=1;i<=m;i++) maxx=max(maxx,get(i)); cout<<maxx*3; return 0; }
- 1
信息
- ID
- 63
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 81
- 已通过
- 58
- 上传者