\(\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. 复现MySQL的索引选择失误以及通过OPTIMIZER_TRACE分析过程

    复现MySQL的索引选择失误以及通过OPTIMIZER_TRACE分析过程 验证环境:MySQL 5.7.39 windows-pc 一.构造数据(生成150万数据) 构建一张账户表,带有一级部门id ...

  2. sql周报

    数据库分类 1.关系型数据库 Mysql Qracle MariaDB PostgreSQL mysql:开源免费 使用最广 性价比最高 Oracle:收费 但安全性高 PostgreSQL:开源免费 ...

  3. [常用工具] cvat安装与使用指北

    cvat是一个非常好用的标注工具,但是也是非常难以安装的标注工具,所以本文简单讲一讲如何安装与使用cvat.cvat最好在ubuntu18.04安装,windows平台安装难度很大,然后在其他平台使用 ...

  4. [R语言] ggplot2入门笔记3—通用教程如何自定义ggplot2

    通用教程简介(Introduction To ggplot2) 代码下载地址 以前,我们看到了使用ggplot2软件包制作图表的简短教程.它很快涉及制作ggplot的各个方面.现在,这是一个完整而完整 ...

  5. 物以类聚人以群分,通过GensimLda文本聚类构建人工智能个性化推荐系统(Python3.10)

    众所周知,个性化推荐系统能够根据用户的兴趣.偏好等信息向用户推荐相关内容,使得用户更感兴趣,从而提升用户体验,提高用户粘度,之前我们曾经使用协同过滤算法构建过个性化推荐系统,但基于显式反馈的算法就会有 ...

  6. ArcGIS工具 - 按线分割面

    功能说明 在ArcGIS数据处理过程中,有时需要沿线把面要素分割开,可以使用高级编辑中的分割面(Cut Polygon)工具.那么,如果要用线图层分割面图层该怎么办呢?为源GIS为您开发了一个自定义模 ...

  7. uniapp 开发微信小程序问题笔记

    最近接手了一个小程序开发,从头开始.使用了 uniapp 搭建,以前没有做过小程序开发,着手看文档.查文档.一步一步完成了任务的开发.特此记录开发过程中的问题. 开发建议: 使用 HBuilderX ...

  8. 【深入浅出Spring原理及实战】「源码调试分析」结合DataSourceRegister深入分析ImportBeanDefinitionRegistrar的源码运作流程

    每日一句 人的一生中不可能会一帆风顺,总会遇到一些挫折,当你对生活失去了信心的时候,仔细的看一看.好好回想一下你所遇到的最美好的事情吧,那会让你感觉到生活的美好. 注入案例代码 如何通过实现Sprin ...

  9. ZXing CaptureActivity黑屏问题

    关于zxing captureActivity黑屏的问题,我在网上搜索一下,结果发现几乎没有这方面的资料.后来自己用了半天时间,独步跟踪调试,查看相机类的代码,最后发现了一点问题,就是关闭相机的时候没 ...

  10. VUE Angular通用动态列表组件-亦可为自动轮播组件-01-根据数据量自动纵向滚动,鼠标划入停止滚动

    本文为纵向轮播,横向轮播/动态列表组件请戳---- 代码是angular的,稍微改改就可以放入Vue项目里,差别不大哟 以下代码可以根据实际情况自行调整 父组件html <app-scroll- ...