解题报告:luogu P1115(模板 最大子段和)
题目链接:P1115 最大子段和
告诉你,这个我调了一天的题是橙题......
线性容易得到,放篇题解:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n[200001],p,ans[200001]={0};
int sum=-9999999;//|x|<=10000 QWQ
cin>>p;
for(int i=1;i<=p;i++)
{
cin>>n[i];//输入
ans[i]=max(ans[i-1]+n[i],n[i]);//DP
sum=max(sum,ans[i]);//取最大值也同时进行,节约时间
}
cout<<sum;//直接输出
return 0;
}
可我想到一道紫题,这样做沦为\(O(n^2)\),那我们如何维护任意区间的最大子段和,可以用线段树维护,开始想了个\(O(n^2logn)\),显然是假的,然后学了下,又出了些\(SB\)错误,终于\(AC\)了。
\(Code\):
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int MAXN=200005;
int t[MAXN],n;
struct seg_t
{
int l,r,sum,pre,suf,maxn;
seg_t()
{
l=r=sum=pre=suf=maxn=0;
}
}a[MAXN<<2];
void update(int k)
{
a[k].pre=max(a[k<<1].pre,a[k<<1].sum+a[k<<1|1].pre);
a[k].suf=max(a[k<<1|1].suf,a[k<<1|1].sum+a[k<<1].suf);
a[k].maxn=max(max(a[k<<1].maxn,a[k<<1|1].maxn),a[k<<1].suf+a[k<<1|1].pre);
a[k].sum=a[k<<1].sum+a[k<<1|1].sum;
}
void build(int k,int l,int r)
{
a[k].l=l,a[k].r=r;
if(l==r)
{
a[k].maxn=a[k].sum=a[k].suf=a[k].pre=t[l];
return;
}
int mid=(l+r)>>1;
build(k<<1,l,mid),build(k<<1|1,mid+1,r);
update(k);
}
seg_t query(int k,int l,int r)
{
int mid=(a[k].l+a[k].r)>>1;
if(a[k].l==l&&a[k].r==r) return a[k];
if(r<=mid) return query(k<<1,l,r);
else if(l>=mid+1) return query(k<<1|1,l,r);
else
{
seg_t ll,rr,ans;
ll=query(k<<1,l,mid),rr=query(k<<1|1,mid+1,r);
ans.sum=ll.sum+rr.sum;
ans.maxn=max(ll.maxn,rr.maxn);
ans.pre=max(ll.pre,ll.sum+rr.pre);
ans.suf=max(rr.suf,rr.sum+ll.suf);
ans.maxn=max(ans.maxn,ll.suf+rr.pre);
return ans;
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&t[i]);
build(1,1,n);
printf("%d\n",query(1,1,n).maxn);
return 0;
}
这种线段树咱真没见过
解题报告:luogu P1115(模板 最大子段和)的更多相关文章
- LeetCode 新题: Find Minimum in Rotated Sorted Array 解题报告-二分法模板解法
Find Minimum in Rotated Sorted Array Question Solution Suppose a sorted array is rotated at some piv ...
- 习题:codevs 1519 过路费 解题报告
今天拿了这道题目练练手,感觉自己代码能力又增强了不少: 我的思路跟别人可能不一样. 首先我们很容易就能看出,我们需要的边就是最小生成树算法kruskal算法求出来的边,其余的边都可以删掉,于是就有了这 ...
- 【NOIP2015】提高day2解题报告
题目: P1981跳石头 描述 一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N ...
- 2011 ACM-ICPC 成都赛区解题报告(转)
2011 ACM-ICPC 成都赛区解题报告 首先对F题出了陈题表示万分抱歉,我们都没注意到在2009哈尔滨赛区曾出过一模一样的题.其他的话,这套题还是非常不错的,除C之外的9道题都有队伍AC,最终冠 ...
- 【百度之星2014~初赛(第二轮)解题报告】JZP Set
声明 笔者近期意外的发现 笔者的个人站点http://tiankonguse.com/ 的非常多文章被其他站点转载,可是转载时未声明文章来源或參考自 http://tiankonguse.com/ 站 ...
- LeetCode: Combination Sum 解题报告
Combination Sum Combination Sum Total Accepted: 25850 Total Submissions: 96391 My Submissions Questi ...
- ACM-ICPC 2017 Asia HongKong 解题报告
ACM-ICPC 2017 Asia HongKong 解题报告 任意门:https://nanti.jisuanke.com/?kw=ACM-ICPC%202017%20Asia%20HongKon ...
- 【解题报告】洛谷 P2571 [SCOI2010]传送带
[解题报告]洛谷 P2571 [SCOI2010]传送带今天无聊,很久没有做过题目了,但是又不想做什么太难的题目,所以就用洛谷随机跳题,跳到了一道题目,感觉好像不是太难. [CSDN链接](https ...
- NOIP 2018 普及组 解题报告
目录 标题统计 题目链接 思路 代码 龙虎斗 题目链接: 思路 代码 摆渡车 题目链接: 思路 对称二叉树 题目链接 思路: 先来解释一下为毛现在才来发解题报告: 其实博主是参加过NOIP 2018普 ...
随机推荐
- Jmeter调度器小记
jmeter的调度器中[持续时间(秒)]的优先级是高于[结束时间]和[启动时间]的 举例子: 前提:[循环次数]勾选[永远] 场景1:[持续时间(秒)]设置为120S,[启动时间]设置T+1min,[ ...
- Docker 安装 Filebeat
使用同版本镜像 7.4.1 1.下载Filebeat镜像 docker pull store/elastic/filebeat: docker images 2.下载默认官方配置文件wget http ...
- Cisco AP-了解AP镜像
Understanding Access Point OS Images IntroductionAll Cisco Aironet 802.11a/b/g/n and 11ac Wave 1 wir ...
- ANSYS 非线性材料模型简介1 ---常用弹塑性模型
目录 1. 材料非线性 2. 三个准则 2.1 屈服准则 2.2 流动准则 2.3 强化准则 3. 常用弹塑性模型 3.1 双线性等向强化 3.2 多线性等向强化 3.3 非线性等向强化 3.4 双线 ...
- iOS 开发之 生产者与消费者模式及其实现
概念: 在工作中,大家可能会碰到这样一种情况:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.线程.进程等).产生数据的模块,就形象地称为生产者:而处理数据的 ...
- 人工神经网络(从原理到代码) Step 01 感知器 梯度下降
版权声明: 本文由SimonLiang所有,发布于http://www.cnblogs.com/idignew/.如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任. 感知器 ...
- PageObject
import org.openqa.selenium.WebDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import o ...
- Struts笔记二:栈值的内存区域及标签和拦截器
值栈和ognl表达式 1.只要是一个MVC框架,必须解决数据的存和取的问题 2.struts2利用值栈来存数据,所以值栈是一个存储数据的内存结构 1. ValueStack是一个接口,在struts ...
- XPath简介
参考视频: https://www.bilibili.com/video/av49809274/?p=22 一,什么是XPATH? xpath(xml path language)是一门在xml和 ...
- 1012 The Best Rank (25分) vector与结构体排序
1012 The Best Rank (25分) To evaluate the performance of our first year CS majored students, we con ...