e..又来了.py

#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;
}

image

image

(⊙﹏⊙)(⊙﹏⊙)(⊙﹏⊙)(⊙﹏⊙)(⊙﹏⊙)(⊙﹏⊙)(⊙﹏⊙)(⊙﹏⊙)
出错了:正文 似乎不清楚,这是一个完整的句子?

#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 !!!

出错了:正文 似乎不清楚,这是一个完整的句子?