poj2750--Potted Flower(线段树)】的更多相关文章

开始懵逼找不到解法,看了网上大牛们的题解才发现是区间合并...  给你n个数形成一个数列环,然后每次进行一个点的修改,并输出这个数列的最大区间和(注意是环,并且区间最大只有n-1个数) 其实只需要维护:最大区间的值 mmax,最小区间的值 mmin.当然要维护这两个值就需要维护:左端点开始的最大与最小区间的值,右端点开始的最大与最小区间的值.然后是数列的总和,数列的最大值,最小值.然后就是查询时的区间最大值等于整个区间的mmax和区间和sum减去mmin,但是当都是非负数,都是负数时要特判.亏我…
题目链接 /* 13904K 532ms 最大 环状 子段和有两种情况,比如对于a1,a2,a3,a4,a5 一是两个端点都取,如a4,a5,a1,a2,那就是所有数的和减去不选的,即可以计算总和减最小连续子段和 二是两个端点不都取,如a1,a2,a3,那需要记录最大连续子段和 线段树,令maxs[l,r]为[l,r]上最大连续子段和,mins[l,r]同理 在向上更新时,可能是由整个左右节点拼成,也可能是只由左或右更新,也可能两段都有,但不包括最左/右端点 所以还需要记录包括区间左端点的max…
题目链接 虽然是看的别的人思路,但是做出来还是挺高兴的. 首先求环上最大字段和,而且不能是含有全部元素.本来我的想法是n个元素变为2*n个元素那样做的,这样并不好弄.实际可以求出最小值,总和-最小,就可以求出,断开的情况了. 然后线段树要单点更新,这种标记,以前遇到过,不过一直没有写过,注意总和好更新,整个这一段的结果也很好更新,最难想的就是左边 和右边标记的结果,具体看pushup代码. #include <cstring> #include <cstdio> #include…
http://poj.org/problem?id=2750 题意:在一个圈中取若干个相邻的数,求他们的最大序列和.不能够同时取所有的数. 看了一篇解题报告写的很详细..http://blog.csdn.net/non_cease/article/details/7437690 #include <stdio.h> #include <stdlib.h> #include <algorithm> #include <string.h> ; using nam…
Description The little cat takes over the management of a new park. There is a large circular statue in the center of the park, surrounded by N pots of flowers. Each potted flower will be assigned to an integer number (possibly negative) denoting how…
题目链接:点击打开链接 题目大意:给出n个数排成一个环.求环的最大连续子序列,不能是总序列 建一个线段树来求最大子序列假设仅仅是一个序列.那么求最大连续子序列非常easy,可是假设是一个环,那就要考虑断点的问题,由于结果可能是由左边一部分+右边一部分,这种结果用线段树没法统计到,所以须要转换一下: 求最大连续子序列 = 总和 - 最小连续子序列 那么题目就非常easy了,要统计出每一段的最大连续子序列,最小连续子序列和总和. sum[rt] = sum[rt<<1] + sum[rt<&…
http://poj.org/problem?id=2750 之前做过类似的题 把一段的左连续最大.最小 右连续最大及最小及中间的连续更新出 就可以算出这段最大的连续和 注意不能全部加上 加上一特判 如果最大和是全部数的和就减去这段最小的和 #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stdlib.h> using name…
问题描述:给定一个环形序列,进行在线操作,每次修改一个元素,输出环上的最大连续子列的和,但不能是完全序列. 算法:把环从一个地方,切断拉成一条直线,用线段树记录当前区间的非空最大子列和当前区间的非空最小子列. 动态规划解决过静态的序列最大连续子序列和问题,时间复杂度可以达到 n(环形序列可能复杂度更高).但是这里涉及到动态更新,更新频度很大,如果计算子序列和复杂度仍然是n,就会非常耗时. 如果环上的数都是正整数,答案是:环上数的总和-根结点的非空最小子列:否则,答案是:max{根结点的非空最大子…
[POJ 2750] Potted Flower(线段树套dp) Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4566   Accepted: 1739 Description The little cat takes over the management of a new park. There is a large circular statue in the center of the park, surrou…
点我看题目链接 题意 : 很多花盆组成的圆圈,每个花盆都有一个值,给你两个数a,b代表a位置原来的数换成b,然后让你从圈里找出连续的各花盆之和,要求最大的. 思路 :这个题比较那啥,差不多可以用DP的思想来解决这个问题,你在某个地方将这个环断开,因为线段树无法建成环形的.然后再去找那个最大值.将这个序列分成两部分,先求左边的最大连续和a,再求右边连续和b,但是由于他们中间相连的那部分,就是左部分的最右边的连续最大和x加上右部分的最左边的连续最大和y加起来可能比ab都大,但分开的话可能并没有a或b…