为啥就是WA#3呢
  • 板块P1714 切蛋糕
  • 楼主flyWang
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/5 18:23
  • 上次更新2024/4/5 20:18:36
查看原帖
为啥就是WA#3呢
854995
flyWang楼主2024/4/5 18:23
#include<bits/stdc++.h>
#define endl '\n'
#define int int64_t
#define ld long double
using namespace std;
int dx[] = { -1,-1,0,1,1,1,0,-1 };
int dy[] = { 0,1,1,1,0,-1,-1,-1 };
const int NC = 2e3 + 10;
char ches[NC][NC];
const int mod = 1e9 + 7;
const int N = 5e5 + 10;
int a[N], s[N], n, m,k;
void solve() {
    cin >> n >> m;
    int mx = INT_MIN;
    for(int i = 1;i <= n;++i)
        cin >> a[i],mx = max(mx,a[i]);
    if(mx <= 0){
        cout << mx << endl;
        return;
    }
    deque<int>q;
    int ans = INT_MIN;
    int sum = INT_MIN;
    for(int i = 1;i <= n;++i){
        if(sum <= 0){
            sum = a[i];
            q.clear();
        }
        else{
            ans = max(ans,sum); 
            sum += a[i];
        }
        q.push_front(a[i]);
        while(q.size() && (q.back() <= 0 || q.size() > m)){
            sum -= q.back();
            q.pop_back();
        }
        ans = max(ans,sum);
        //cout <<"sum = " << sum << endl;
    }
    cout << ans << endl;
}
signed main() {
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	int t = 1; 
	//cin >> t;
	while (t--) {
		solve();
	}
	return 0;
}

代码如上,各种hack数据也用了,但就是wa3,非常疑惑,期待您的帮助T_T

2024/4/5 18:23
加载中...