rt
这份代码以 O(k(n+q)) 的复杂度 AC 了本题,是否说明数据过水?
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,k,q;
int a[5005][10005],st[100005][1005];
inline int read()
{
int x=0;
bool flag=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')
flag=0;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=(x<<1)+(x<<3)+c-'0';
c=getchar();
}
return (flag?x:~(x-1));
}
signed main(){
cin >> n >> k >> q;
for(int i = 1;i <= k;i ++){
for(int j = 1;j <= n;j ++){
a[i][j] = read();
a[i][j] += a[i][j-1];
}
}
while(q--){
int l = read(),r = read(),mx = -1;
if(k > 100 && st[l][r] != 0){
printf("%lld\n",st[l][r]);
continue;
}
for(int i = 1;i <= k;i ++){
int x = a[i][r] - a[i][l-1];
if(x > mx) mx = x;
}
if(k > 100) st[l][r] = mx;
printf("%lld\n",mx);
}
return 0;
}