求调弱智题
  • 板块学术版
  • 楼主Lovely_Elaina
  • 当前回复12
  • 已保存回复12
  • 发布时间2023/1/16 23:01
  • 上次更新2023/10/24 03:54:53
查看原帖
求调弱智题
781159
Lovely_Elaina楼主2023/1/16 23:01

#include <bits/stdc++.h>
using namespace std;
const int N = 100005;

int n,m,l,r,x;
int a[N],s[N];
int b[10005],ma;

int main(){
    cin >> n >> m;
    for(int i = 1; i <= n; i++){
        cin >> a[i];
        s[i] = s[i-1] + a[i];
    }
    
    for(int x = n; x >= 1; x--){
        for(int i = 1; i <= n-x+1; i++){
            ma = max(s[i+x]-s[i-1],ma);
            //cout << "cnmd" << ma << endl;
        }
        b[x] = ma;
        for(int i = x; i <= n; i++){
            b[x] = max(b[x],b[i]);
            //cout << "tmdsb" << b[x] << endl;
        }
        ma = 0;
        cout << "????? : " << b[5] << endl;
    }
    
    for(int i = 1; i <= m; i++){
        cin >> x;
        cout << b[x] << endl;
        /*if(b[x]){
            cout << b[x] << endl;
            continue;
        }
        for(int i = 1; i <= n-x; i++)
            ma = max(s[i+x]-s[i-1],ma);
        b[x] = ma;
        for(int i = 1; i <= n; i++)
            b[x] = max(b[x],b[i]);
        cout << b[x] << endl;
        ma = 0;*/
    }
    return 0;
}

本人对区间求和不是很熟悉,谢谢

2023/1/16 23:01
加载中...