\(\text{Solution}\)

非常经典的求区间最大字段和

不难想到线段树,考虑处理区间答案的合并

维护前缀后缀最大和与区间答案,合并考虑跨中点贡献即可

代码打得非常恶心。。。

\(\text{Code}\)

#include <cstdio>
#define RE register
#define IN inline
#define ls (p << 1)
#define rs (ls | 1)
using namespace std; const int N = 1e5 + 5, INF = 0x3f3f3f3f;
int n, m, a[N], s[N];
struct node{int pl, pr, sl, sr, l, r;}seg[N * 4];
IN int Get(int l, int r){if (!l || !r) return -INF; return s[r] - s[l - 1];}
IN node operator + (const node &a, const node &b)
{
node c = node{0, 0, 0, 0, 0, 0};
c.pl = a.pl, c.pr = a.pr; if (Get(a.pl, b.pr) > Get(c.pl, c.pr)) c.pr = b.pr;
c.sl = b.sl, c.sr = b.sr; if ((Get(a.sl, b.sr) > Get(c.sl, c.sr) || (Get(a.sl, b.sr) == Get(c.sl, c.sr) && a.sl < c.sl))) c.sl = a.sl;
if (Get(a.l, a.r) >= Get(b.l, b.r)) c.l = a.l, c.r = a.r; else c.l = b.l, c.r = b.r;
if (Get(c.pl, c.pr) > Get(c.l, c.r) || (Get(c.pl, c.pr) == Get(c.l, c.r) && (c.pl < c.l || (c.pl == c.l && c.pr < c.r)))) c.l = c.pl, c.r = c.pr;
if (Get(c.sl, c.sr) > Get(c.l, c.r) || (Get(c.sl, c.sr) == Get(c.l, c.r) && (c.sl < c.l || (c.sl == c.l && c.sr < c.r)))) c.l = c.sl, c.r = c.sr;
if (Get(a.sl, b.pr) > Get(c.l, c.r) || (Get(a.sl, b.pr) == Get(c.l, c.r) && (a.sl < c.l || (a.sl == c.l && b.pr < c.r)))) c.l = a.sl, c.r = b.pr;
return c;
}
void build(int p, int l, int r)
{
if (l == r) return seg[p] = node{l, l, l, l, l, l}, void();
int mid = l + r >> 1; build(ls, l, mid), build(rs, mid + 1, r), seg[p] = seg[ls] + seg[rs];
}
node Query(int p, int l, int r, int x, int y)
{
if (x <= l && r <= y) return seg[p]; int mid = l + r >> 1; node ret = node{0, 0, 0, 0, 0, 0};
if (x <= mid) ret = Query(ls, l, mid, x, y); if (y > mid) ret = ret + Query(rs, mid + 1, r, x, y);
return ret;
} int main()
{
scanf("%d%d", &n, &m); for(RE int i = 1; i <= n; i++) scanf("%d", &a[i]), s[i] = s[i - 1] + a[i]; build(1, 1, n); node ret;
for(int l, r; m; --m) scanf("%d%d", &l, &r), ret = Query(1, 1, n, l, r), printf("%d %d %d\n", ret.l, ret.r, Get(ret.l, ret.r));
}

JZOJ 1073. 【GDOI2005】山海经的更多相关文章

  1. ural 1073. Square Country

    1073. Square Country Time limit: 1.0 secondMemory limit: 64 MB There live square people in a square ...

  2. 01背包 URAL 1073 Square Country

    题目传送门 /* 题意:问n最少能是几个数的平方和 01背包:j*j的土地买不买的问题 详细解释:http://www.cnblogs.com/vongang/archive/2011/10/07/2 ...

  3. Ural 1073 Square Country (DP)

    题目地址:Ural 1073 DP水题.也能够说是背包. #include <iostream> #include <cstdio> #include <string&g ...

  4. ural 1073.Square Country(动态规划)

    1073. Square Country Time limit: 1.0 secondMemory limit: 64 MB There live square people in a square ...

  5. (jzoj snow的追寻)线段树维护树的直径

    jzoj snow的追寻 DFS序上搞 合并暴力和,记录最长链和当前最远点,距离跑LCA # include <stdio.h> # include <stdlib.h> # ...

  6. [jzoj]3506.【NOIP2013模拟11.4A组】善良的精灵(fairy)(深度优先生成树)

    Link https://jzoj.net/senior/#main/show/3506 Description 从前有一个善良的精灵. 一天,一个年轻人B找到她并请他预言他的未来.这个精灵透过他的水 ...

  7. [jzoj]3468.【NOIP2013模拟联考7】OSU!(osu)

    Link https://jzoj.net/senior/#main/show/3468 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: ...

  8. [jzoj]5478.【NOIP2017提高组正式赛】列队

    Link https://jzoj.net/senior/#main/show/5478 Description Sylvia 是一个热爱学习的女孩子.       前段时间,Sylvia 参加了学校 ...

  9. [jzoj]1115.【HNOI2008】GT考试

    Link https://jzoj.net/senior/#main/show/1115 Description 申准备报名参加GT考试,准考证号为n位数X1X2X3...Xn-1Xn(0<=X ...

  10. [jzoj]2538.【NOIP2009TG】Hankson 的趣味题

    Link https://jzoj.net/senior/#main/show/2538 Description Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫H ...

随机推荐

  1. 深入浅出学习透析Nginx服务器的基本原理和配置指南「Keepalive性能分析实战篇」

    Linux系统:Centos 7 x64 Nginx版本:1.11.5 Nginx 是一款面向性能设计的 HTTP 服务器,能反向代理 HTTP,HTTPS 和邮件相关(SMTP,POP3,IMAP) ...

  2. c++ trivial, standard layout和POD类型解析

    目录 1. trivial类型 2. standard layout类型 3. 集大成者,POD(Plain Old Data)类型 4. 测试代码 1. trivial类型 占用一片连续的内存,编译 ...

  3. JavaScript合集(流程控制语句)

    流程控制 条件判断语句 条件分支语句 循环语句 条件判断语句 if语句 语法: if(条件表达式){ 语句 } ------- if(a > 10){ alert('a比10大') } if-e ...

  4. MISC中需要jio本处理的奇怪隐写

    好耶! 老样子,还是以ctfshow[1]中misc入门中的题目为切入点 感兴趣的同学可以一边做题一边看看.呜呜,求点浏览量了 APNG隐写(MISC40) APNG是普通png图片的升级版,他的后缀 ...

  5. 各类数据库写入Webhsell总结

    1.MySQL写入WebShell 1.1写入条件 数据库的当前用户为ROOT或拥有FILE权限: 知道网站目录的绝对路径: PHP的GPC参数为off状态: MySQL中的secure_file_p ...

  6. python字符串常用方法介绍,基于python3.10

    python字符串常用方法-目录: 1.strip().lstrip().rstrip()2.removeprefix().removesuffix()3.replace()4.split().rsp ...

  7. 【PostgreSQL】PG读取元数据获取表结构及字段类型信息(过程拆解及其他应用场景)

    〇.参考链接 一.代码 指定模式的表名和字段 select c.relname 表名, cast ( obj_description (relfilenode, 'pg_class') as varc ...

  8. 漫谈计算机网络:番外篇 ------网络安全相关知识——>公钥与私钥、防火墙与入侵检测

    <漫谈计算机网络>上次已经完结啦,今天出一个番外篇! 2022-12-06 今天我们来聊一聊网络安全 废话不多说直接进入正题 网络安全问题概述 计算机网络面临的安全性威胁 两大类威胁:被动 ...

  9. Java基础类String学习分析

    目录 1 String不可变性 2 不可变的好处 3 String+和StringBuilder效率差异 4 String, StringBuffer and StringBuilder 5 Stri ...

  10. 软件安装——tortoiseGit安装和配置

    Tortoisegit安装指南 TortoiseGit是一个开放的Git版本控制系统的源客户端,它是Git和Windows资源管理器的整合,提供了Git的图形化操作界面 一.软件安装 1.进入tort ...