关于本次div2.备用题
  • 板块灌水区
  • 楼主sunkuangzheng
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/10/4 19:57
  • 上次更新2023/10/27 08:48:27
查看原帖
关于本次div2.备用题
679936
sunkuangzheng楼主2022/10/4 19:57

rt

这份代码以 O(k(n+q))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;
}
2022/10/4 19:57
加载中...