#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
ll x, i;
};
node a[205][205];
ll ands;
int main(){
ll n, m;
cin >> n >> m ;
for(ll i=0;i<n;i++){
for(ll j=0;j<m;j++){
cin >> a[i][j].x;
a[i][j].i=j;
if(i>0){
if(a[i][j].x)
a[i][j].x=a[i-1][j].x+a[i][j].x;
}
cout << a[i][j].x << " ";
}
cout << endl;
}
for(ll i=0;i<n;i++){
stack<node> s;
ll ans[205]={};
ll as=0;
for(ll j=m-1;j>=0;j--){
while(!s.empty()&&s.top().x>=a[i][j].x){
s.pop();
}
if(!s.empty()){
ans[j]=s.top().i;
}
else{
ans[j]=n;
}
s.push(a[i][j]);
}
while(!s.empty()){
s.pop();
}
for(ll j=0;j<m;j++){
while(!s.empty()&&s.top().x>=a[i][j].x){
s.pop();
}
if(!s.empty()){
ans[j]=(ans[j]-s.top().i-1)*a[i][j].x;
}
else{
ans[j]=(ans[j])*a[i][j].x;
}
s.push(a[i][j]);
}
for(ll j=0;j<m;j++){
as=max(ans[j], as);
}
cout << as << endl;
ands=max(ands, as);
}
cout << ands;
}
(⊙﹏⊙)(⊙﹏⊙)(⊙﹏⊙)(⊙﹏⊙)(⊙﹏⊙)(⊙﹏⊙)(⊙﹏⊙)(⊙﹏⊙)
出错了:正文 似乎不清楚,这是一个完整的句子?
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
ll x, i;
};
node a[205][205];
ll ands;
int main(){
ll n, m;
cin >> n >> m ;
for(ll i=0;i<n;i++){
for(ll j=0;j<m;j++){
cin >> a[i][j].x;
a[i][j].i=j;
if(i>0){
if(a[i][j].x)
a[i][j].x=a[i-1][j].x+a[i][j].x;
}
cout << a[i][j].x << " ";
}
cout << endl;
}
for(ll i=0;i<n;i++){
stack<node> s;
ll rans[205]={};
ll lans[205]={};
ll as=0;
for(ll j=m-1;j>=0;j--){
while(!s.empty()&&s.top().x>=a[i][j].x){
s.pop();
}
if(!s.empty()){
rans[j]=s.top().i;
}
else{
rans[j]=n;
}
s.push(a[i][j]);
}
while(!s.empty()){
s.pop();
}
for(ll j=0;j<m;j++){
while(!s.empty()&&s.top().x>=a[i][j].x){
s.pop();
}
if(!s.empty()){
lans[j]=s.top().i;//(ans[j]-s.top().i-1)*a[i][j].x;
}
else{
lans[j]=0;
}
s.push(a[i][j]);
}
for(ll j=0;j<m;j++){
as=max((rans-lans-1)*a[i][j].x, as);
}
cout << as << endl;
ands=max(ands, as);
}
cout << ands;
}
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
ll x, i;
};
node a[205][205];
ll ands;
int main(){
ll n, m;
cin >> n >> m ;
for(ll i=0;i<n;i++){
for(ll j=0;j<m;j++){
cin >> a[i][j].x;
a[i][j].i=j;
if(i>0){
if(a[i][j].x)
a[i][j].x=a[i-1][j].x+a[i][j].x;
}
cout << a[i][j].x << " ";
}
cout << endl;
}
for(ll i=0;i<n;i++){
stack<node> s;
ll rans[205]={};
ll lans[205]={};
ll as=0;
for(ll j=m-1;j>=0;j--){
while(!s.empty()&&s.top().x>=a[i][j].x){
s.pop();
}
if(!s.empty()){
rans[j]=s.top().i;
}
else{
rans[j]=n;
}
s.push(a[i][j]);
}
while(!s.empty()){
s.pop();
}
for(ll j=0;j<m;j++){
while(!s.empty()&&s.top().x>=a[i][j].x){
s.pop();
}
if(!s.empty()){
lans[j]=s.top().i;//(ans[j]-s.top().i-1)*a[i][j].x;
}
else{
lans[j]=0;
}
s.push(a[i][j]);
}
for(ll j=0;j<m;j++){
as=max((rans[j]-lans[j]-1)*a[i][j].x, as);
}
cout << as << endl;
ands=max(ands, as);
}
cout << ands;
}
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
ll x, i;
};
node a[205][205];
ll ands;
int main(){
ll n, m;
cin >> n >> m ;
for(ll i=0;i<n;i++){
for(ll j=0;j<m;j++){
cin >> a[i][j].x;
a[i][j].i=j;
if(i>0){
if(a[i][j].x)
a[i][j].x=a[i-1][j].x+a[i][j].x;
}
}
}
for(ll i=0;i<n;i++){
stack<node> s;
ll rans[205]={};
ll lans[205]={};
ll as=0;
for(ll j=m-1;j>=0;j--){
while(!s.empty()&&s.top().x>=a[i][j].x){
s.pop();
}
if(!s.empty()){
rans[j]=s.top().i;
}
else{
rans[j]=m;
}
s.push(a[i][j]);
}
while(!s.empty()){
s.pop();
}
for(ll j=0;j<m;j++){
while(!s.empty()&&s.top().x>=a[i][j].x){
s.pop();
}
if(!s.empty()){
lans[j]=s.top().i;//(ans[j]-s.top().i-1)*a[i][j].x;
}
else{
lans[j]=0;
}
s.push(a[i][j]);
}
for(ll j=0;j<m;j++){
as=max((rans[j]-lans[j]-1)*a[i][j].x, as);
}
ands=max(ands, as);
}
cout << ands;
}
90!!
改成-1
1 个赞
AC !!!
出错了:正文 似乎不清楚,这是一个完整的句子?