题目:Potted Flower
大意:该你一个换环,求环上的最大连续的和(如果最大和包含所有数,要求减去最小的一个)。
思路:这道题的思路并不难,需要在线段树里维护区间的最大和,最小和(应为是环状的,所以答案有可能是总和减去最小和),然后需要用一个区间左边的最大最小,右边的最大最小来维护区间的最大和最小和。这道题的解法就是这样。

代码奉上

#include<cstdio>
#include<algorithm>
using namespace std;
#define M(i) ((t[(i)].l + t[i].r) >> 1)
const int MAXN = 1e5 + 5;
const int INF = 1e9;
struct node
{int l,r,lmx,rmx,lmn,rmn,sum,mx,mn;
}t[MAXN << 2];
int n, p[MAXN], m;
void build(int i, int l, int r)
{t[i].l = l;t[i].r = r;t[i].lmx = t[i].rmx = t[i].mx = -INF;t[i].lmn = t[i].rmn = t[i].mn = INF;if(l == r) {p[l] = i; return;}build(i<<1, l, M(i));build(i<<1|1, M(i)+1, r);
}
int max(int a,int b,int c)
{return max(a,max(b,c));
}
int min(int a,int b,int c)
{return min(a,min(b,c));
}
void upd(int pos, int v)
{int i = p[pos];t[i].lmx = t[i].rmx = t[i].sum = t[i].lmn = t[i].rmn = t[i].mx = t[i].mn = v;i >>= 1;while(i){t[i].lmx = max(t[i<<1].lmx, t[i<<1].sum + t[i<<1|1].lmx);t[i].lmn = min(t[i<<1].lmn, t[i<<1].sum + t[i<<1|1].lmn);t[i].rmx = max(t[i<<1|1].rmx, t[i<<1|1].sum + t[i<<1].rmx);t[i].rmn = min(t[i<<1|1].rmn, t[i<<1|1].sum + t[i<<1].rmn);t[i].sum = t[i<<1].sum + t[i<<1|1].sum;t[i].mx = max(t[i<<1].mx,t[i<<1].rmx+t[i<<1|1].lmx,t[i<<1|1].mx);t[i].mn = min(t[i<<1].mn,t[i<<1].rmn+t[i<<1|1].lmn,t[i<<1|1].mn);i >>= 1;}
}
int main()
{int t1, t2;scanf("%d", &n);build(1, 1, n);for(int i = 1; i <= n; i++){scanf("%d", &t1);upd(i, t1);}scanf("%d", &m);for(int i = 1; i <= m; i++){scanf("%d%d", &t1, &t2);upd(t1, t2);if(t[1].mx == t[1].sum && t[1].sum > 0)printf("%d\n",t[1].sum - t[1].mn);elseprintf("%d\n",max(t[1].mx,t[1].sum - t[1].mn));}return 0;
}

转载于:https://www.cnblogs.com/geng4512/p/5296950.html

poj2750 PottedFlower(线段树的环状操作)相关推荐

  1. BZOJ-4811: [Ynoi2017]由乃的OJ (树链剖分 线段树维护区间操作值 好题)

    4811: [Ynoi2017]由乃的OJ Time Limit: 6 Sec  Memory Limit: 256 MB Submit: 366  Solved: 118 [Submit][Stat ...

  2. uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)

    线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报  分类: ...

  3. Tsinsen A1517. 动态树 树链剖分,线段树,子树操作

    题目 : http://www.tsinsen.com/A1517 A1517. 动态树 时间限制:3.0s   内存限制:1.0GB    总提交次数:227   AC次数:67   平均分:49. ...

  4. 2017年ICPC西安邀请赛A、XOR(线段树套线性基 + 思维)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目传送门 Problem 给你 nnn 和 nnn 个整数的数组 aaa,以及kkk和qqq,有 q ...

  5. 数据结构---线段树

    线段树 转载请注明出处,谢谢!http://blog.csdn.net/metalseed/article/details/8039326  持续更新中···   一:线段树基本概念 1:概述 线段树 ...

  6. POJ 3225 Help with Intervals(线段树)

    这题纠结了两天,开始一点思路没有,后来看到有大牛把这题的做法称作区间树,并说明了区间树与线段树的区别(区间树是区间内被染色的区间标记为1,未被染色的区间标记为0).我觉得这就是线段树的一类操作,没有必 ...

  7. hdu 4831(线段树---待解决)

    Scenic Popularity Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  8. 线段树之延时标记(区间修改)及lazy思想

    暴力求解 1.最简单的方法是:在主函数中添加一个循环  进行 r-l+1次单点修改实现区间修改,对于单个元素修改时间复杂度为 O(log2(n)) 所以对于单个区间修改的时间复杂度为 O(n*log( ...

  9. HDU - 5475 An easy problem(线段树)

    题目链接:点击查看 题目大意:给定n次操作和一个m,每次操作后对m取模,每次操作分为两种,初始化当前的数为1: 1 x:当前的数乘上x后输出结果 2 x:当前的数除以第x个操作的数后输出结果 题目分析 ...

最新文章

  1. 获取请求参数通用方式|| 中文乱码问题||请求转发
  2. 周五话分析 | 你的梦想是什么?做一个懂 Session 分析的人
  3. flutter图片预览_flutter好用的轮子推荐四-可定制的图片预览查看器photo
  4. 全网最强的数据可视化秘诀:学会这个工具,数据分析不是事
  5. photoshop菜鸟实用入门(2)----常用的一些快捷操作
  6. Nginx重启时丢失nginx.pid文件
  7. 内核中的中断函数request_irq()
  8. linux如何查看系统崩溃日志,Linux系统日志及日志分析
  9. matlab 动平衡,运用labview和matlab混合编程实现转子动平衡的测试与控制
  10. Postgresql使用技巧
  11. ERROR: operator does not exist: integer = character varying
  12. 安卓选择市区的省市区联动
  13. 华为云OBS究竟是什么?
  14. Security Warning: The negotiated TLS 1.0 is an insecure protocol and is supported for backward compa
  15. 达梦8,关于参数CTAB_SEL_WITH_CONS的验证
  16. 传智播客最新教学视频,共享给你们了,有需要的戳进来~~~~
  17. 计算机网络考研面试题
  18. 盘点 | 2017年,哪些黑科技改变了我们的生活?
  19. 红米 android8 刷机,又一部红米“吃奥利奥”:全网通版Note 3安卓8.0刷机包放出...
  20. 画出传输门、三态门、开路门_第2章_数字电子技术基础(ppt课件)_ppt_大学课件预览_高等教育资讯网...

热门文章

  1. leetcode3 无重复字符最长子串
  2. 约瑟夫环-(数组、循环链表、数学)
  3. GCC如何产生core dump
  4. 人工智能工程师需具备的技能_2020年软件测试工程师需要具备的技能--需要学什么--面试题有哪些(灵魂拷问)...
  5. 中科大 计算机网络12 Web和HTTP
  6. 在Windows下使用OpenCL配置
  7. CABAC之手把手教你编码
  8. Docker: dockerfile 使用介绍
  9. 解决 : org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
  10. python脚本调用外部程序的若干种方式以及利弊