// Problem: 数学考试 // Contest: NowCoder // URL: https://ac.nowcoder.com/acm/contest/20960/1022 // Memory Limit: 65536 MB // Time Limit: 2000 ms // 2022-03-15 10:24:24 // // Powered by CP Editor (https://cpeditor.org) #includeusing namespace std; #define rep(i,l,r) for(int i=(l);i<=(r);i++) #define per(i,l,r) for(int i=(l);i>=(r);i--) #define ll long long #define mset(s,t) memset(s,t,sizeof(t)) #define mcpy(s,t) memcpy(s,t,sizeof(t)) #define fi first #define se second #define pb push_back #define all(x) (x).begin(),(x).end() #define SZ(x) ((int)(x).size()) #define mp make_pair typedef pair pii; typedef pair pll; typedef vector vi; typedef vector Vll; typedef vector > vpii; typedef vector > vpll; const ll mod = 1e9 + 7; //const ll mod = 998244353; const double pi = acos(-1.0); inline ll qmi (ll a, ll b) { ll ans = 1; while (b) { if (b & 1) ans = ans * a%mod; a = a * a %mod; b >>= 1; } return ans; } inline int read () { int x = 0, f = 0; char ch = getchar(); while (!isdigit(ch)) f |= (ch=='-'),ch= getchar(); while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar(); return f?-x:x; } template void print(T x) { if (x < 0) putchar('-'), x = -x; if (x >= 10) print(x/10); putchar(x % 10 + '0'); } inline ll sub (ll a, ll b) { return ((a - b ) %mod + mod) %mod; } inline ll add (ll a, ll b) { return (a + b) %mod; } inline ll inv (ll a) { return qmi(a, mod - 2); } void solve () { int n, k; scanf("%d%d", & n, & k); vector a(n + 3, 0),b (n + 3, 0), c(n + 3, 0); for (int i = 1; i <= n; i ++) { scanf("%lld", & a[i]); b[i] = a[i]; c[i] = a[i]; } for (int i = 1; i <= n; i ++)b[i] += b[i - 1]; for (int i = n; i >= 1; i --) c[i] += c[i + 1]; ll suf = LONG_LONG_MIN, ans = LONG_LONG_MIN; for (int i = n - k; i >= k; i --) { suf = max (suf, c[i + 1] - c[i + k + 1]); ans = max (ans, b[i] - b[i - k] + suf); } print(ans); puts(""); } signed main () { // ios::sync_with_stdio(0),cin.tie(0), cout.tie(0); int t; t =1; cin >> t; while (t --) solve(); return 0; }
题意:给你一个序列,要求求长度为n,选两个不相交的长度为k的区间的最大和
问题结构:固定区间大小 题解:从后往前遍历,依次维护最大的后缀和,然后对于每个i选择去max 我在想用什么数据结构,实际上这题不需要数据结构



