ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Can you answer these queries 1?

2022-01-30 16:33:00  阅读:169  来源: 互联网

标签:dep these max mid len int sm queries answer


Can you answer these queries 1?

代码

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int M = 1e5 + 5;
int m, n, len, a[M];
int lg[M << 2], pos[M], p[21][M], s[21][M];
#define max(a,b) ((a) > (b) ? (a) : (b))
void build(int u,int l,int r,int dep)
{
	if (l == r)
	{
		pos[l] = u;
		return;
	}
	int mid = (l + r) >> 1;
	int prep = a[mid];
	int sm = a[mid];
	p[dep][mid] = a[mid];
	s[dep][mid] = a[mid];
	sm = max(sm, 0);
	for (int i = mid - 1; i >= l; i--)
	{
		prep += a[i], sm += a[i];
		s[dep][i] = max(s[dep][i + 1], prep);
		p[dep][i] = max(p[dep][i + 1], sm);
		sm = max(sm, 0);
	}
	p[dep][mid + 1] = a[mid + 1];
	s[dep][mid + 1] = a[mid + 1];
	prep = sm = a[mid + 1];
	sm = max(sm, 0);
	for (int i = mid + 2; i <= r; i++)
	{
		prep += a[i], sm += a[i];
		s[dep][i] = max(s[dep][i - 1], prep);
		p[dep][i] = max(p[dep][i - 1], sm);
		sm = max(sm, 0);
	}
	build(u << 1, l, mid, dep + 1);
	build(u << 1 | 1, mid + 1, r, dep + 1);
	return;
}
int query(int l, int r)
{
	if (l == r)
		return a[l];
	int d = lg[pos[l]] - lg[pos[l] ^ pos[r]];
	return max(max(p[d][l], p[d][r]), s[d][l] + s[d][r]);
}
int main() 
{
	cin >> n;
	for (len = 2; len < n; len <<= 1);
	for (int i = 1; i <= n; i++) cin>>a[i];
	for (int l = len * 2, i = 2; i <= l; ++i) lg[i] = lg[i >> 1] + 1;
	build(1, 1, len, 1);
	cin >> m;
	for (int l, r; m; m--)
	{
		cin >> l >> r;
		cout<<query(l, r)<<endl;
	}
	return 0;
}

标签:dep,these,max,mid,len,int,sm,queries,answer
来源: https://www.cnblogs.com/Lewis--blog/p/15857057.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有