13636:教义问答手册(附此题《经典语录》)

#include <cstdio>
#include <iostream>
using namespace std;
#define maxn 100005
int n, L, Q;
int p[maxn], ql[maxn], qr[maxn], sum[maxn];
int fl[55][maxn], fr[55][maxn];
int Left[maxn], Right[maxn], ans[maxn];

void calc_L( int l, int r ) {
	for( int i = 0;i < min( r - l + 1, L );i ++ ) {
		fl[i][r - i + 1] = 0;
		for( int j = r - i;j >= l;j -- )
			fl[i][j] = j + L - 1 > r - i ? 0 : max( fl[i][j + 1], fl[i][j + L] + sum[j + L - 1] - sum[j - 1] );

	}
}

void calc_R( int l, int r ) {
	for( int i = 0;i < min( r - l + 1, L );i ++ ) {
		fr[i][l + i - 1] = 0;//[l,l+i-1]
		for( int j = l + i;j <= r;j ++ )
			fr[i][j] = j - L + 1 < l + i ? 0 : max( fr[i][j - 1], fr[i][j - L] + sum[j] - sum[j - L] );
		
	} 
}

void solve( int Ql, int Qr, int l, int r ) {
	if( Ql > Qr || r - l + 1 < L ) return;
	int mid = ( l + r ) >> 1;
	int lenl = 0, lenr = 0;
	calc_L( l, mid );
	calc_R( mid + 1, r );
	for( int i = Ql;i <= Qr;i ++ ) {
		int id = p[i];
		if( qr[id] <= mid ) 
			Left[++ lenl] = id;
		else if( ql[id] > mid ) 
			Right[++ lenr] = id;
		else {
			ans[id] = fl[0][ql[id]] + fr[0][qr[id]];
		
			for( int j = max( 1, L - ( qr[id] - mid ) );j <= mid - ql[id] + 1 && j < L;j ++ )
				ans[id] = max( ans[id], ( mid - j < l ? 0 : fl[j][ql[id]] ) + ( mid + L - j + 1 > r ? 0 : fr[L - j][qr[id]] ) + sum[mid + L - j] - sum[mid - j] );

		}
	}
	for( int i = 1;i <= lenl;i ++ ) p[Ql + i - 1] = Left[i];
	for( int i = 1;i <= lenr;i ++ ) p[Ql + lenl + i - 1] = Right[i];
	solve( Ql, Ql + lenl - 1, l, mid );
	solve( Ql + lenl, Ql + lenl + lenr - 1, mid + 1, r );
	
}

int main() {
	scanf( "%d %d", &n, &L );
	for( int i = 1;i <= n;i ++ ) {
		scanf( "%d", &sum[i] );
		sum[i] += sum[i - 1];
	}
	scanf( "%d", &Q );
	for( int i = 1;i <= Q;i ++ ) {
		p[i] = i;
		scanf( "%d %d", &ql[i], &qr[i] );
	}
	solve( 1, Q, 1, n );
	for( int i = 1;i <= Q;i ++ )
		printf( "%d\n", ans[i] );
	return 0;
}

“汉中沃野如关中,四五百里烟蒙蒙。黄云连天夏麦熟,水稻漠漠吹秋风。”——摘自 黄裳《汉中行》

“泉岭精神不朽,汉中诸球永生。”——摘自《泉岭精神创立者语录》

“把神犇烤一烤,味道会更好。”——摘自《xhr语录》

“秀恩爱有利于身心健康!”——摘自《泉岭精神集大成者语录》

“楼上说的对!”——摘自《泉岭精神信徒语录合集》

“不会做积分,怎么找妹子!”——摘自《xhr语录》

“切实保护耕地以放置更多的哨戒炮。”——摘自《泉岭精神信徒语录合集》

“就算两个包子一起吃掉,也不能阻止我修筑梯田。”——摘自《泉岭精神创立者语录》

“我来自泉岭,他来自汉中,我们半道而逢。”——摘自《泉岭精神集大成者语录》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值