原题目

  某个帝国修了一条非常非常长的城墙来抵御外敌,城墙共分N段,每一段用一个整数来描述坚固程度。

  过了几年,城墙年久失修,有很多段都己经损坏,于是皇帝决定派你去修理城墙,但是经费有限.

  所以你准备先考察一下城墙如果一段连续的城墙它们的坚固程度之和>0,邵么我们认为这段城墙暂时有效。

  例如

  5

  -5 1 - 3 2 3

  这段城墙共分5段,坚固程度之和=1.要比0大,我们认为它还算有效

  下面告诉你N段城墙的坚固情况。

  请你求出最长的一段连续的城墙,要求坚固程度之和>0

  第1行是一个数N。

  第2行共N个整数,Ai描述第i段城墙的坚固程度:

  输出共一行一个整数,最长的一段连续城墙的长度;

S1:

  Input:

-  -   - -  - 

  Output:



  Describe:维护一个前缀和单调减的队列,保证后面减前面[也就是sum[l->r]]为正。

  code:

#include<bits/stdc++.h>
#define rep(a,b) for(register int i=(a);i<=(b);i++)
#define per(a,b) for(register int i=(a);i>=(b);i--)
using namespace std;
long long l,r,n,ans,tot,a[5959595],q[5050505],now;
inline int read(){
int ret=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9') {if (ch=='-') f=-f;ch=getchar();}
while (ch>='0'&&ch<='9') ret=ret*10+ch-'0',ch=getchar();
return ret*f;
}
int main(){
n=read();
for(int i=1;i<=n;i++)a[i]=a[i-1]+read();
for(int i=1;i<=n;i++)
{
l=0,r=tot,now=0x7fffffff; //初始化
while(l<=r){ //二分,由于q是单调队列,满足单调性
long long mid=l+r>>1;
if(a[i]>a[q[mid]])now=mid,r=mid-1; //找当前值[前缀和]在q中的位置
else l=mid+1;
}
if(a[i]<a[q[tot]])q[++tot]=i; //无弹出,所以编号也满足单调减。越前面的越好,对答案的贡献越大[若在队尾加入队列]
if(now!=0x7fffffff)ans=max(i-q[now],ans); //加入ans
}
cout<<ans;
return 0;
}

  

Day6-T3的更多相关文章

  1. 安徽师大附中%你赛day6 T3 Hamsters [POI2010]CHO-Hamsters 解题报告

    [POI2010]CHO-Hamsters 题意: 给出n个互不包含的字符串,要求你求出一个最短的字符串S,使得这n个字符串在S中总共至少出现m次,问S最短是多少? 范围: \(1 \le n \le ...

  2. python笔记 - day6

    python笔记 - day6 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 大纲: 利用递归,实现阶乘: Python反射 pyt ...

  3. 考前停课集训 Day6 垒

    Day 6 今天在家里的 家里蹲 其实是day7的时候想到要写day6了 草率补充一下 NOIP考前棕名退不掉咯 你觉得我还会打洛谷的题目吗? 依然退步 没用心 T1 分火腿 数论题 我感觉挺难的 T ...

  4. 【FCS NOI2018】福建省冬摸鱼笔记 day6【FJOI 2018】福建省选混分滚蛋记 day1

    记录一下day6发生的事情吧. 7:30 到达附中求索碑,被人膜,掉RP. 7:50 进考场,6楼的最后一排的最左边的位置,世界上最角落的地方,没有任何想法. 发现电脑时间和别人不一样,赶快调了一下. ...

  5. 2022寒假集训day6

    day6上午还是做四道题T1区域[上机练习]1.编程计算由"*"号围成的下列图形的面积.面积计算方法是统计*号所围成的闭合曲线中水平线和垂直线交点的数目.如下图所示,在 10*10 ...

  6. Python之路,Day6 - Python基础6

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

  7. day6

    开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...

  8. [NOIP2016]愤怒的小鸟 D2 T3 状压DP

    [NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...

  9. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  10. DAY6 处理http头,格式化输出

    <html> <head> <script> function insertStr(str1,n,str2){ if(str1.length<n){ retu ...

随机推荐

  1. 为PHP开发搭建环境

    为了能在自己的电脑上(mac OS系统)开始编写PHP代码并完成运行,需要有: 1.安装Web服务器 2.安装PHP 3.安装数据库,比如MySQL 4.一个PHP的IDE 为了上面所提到的1~3步的 ...

  2. java使用netty模拟实现一个类dubbo的分布式服务调用框架

    本文较长,如果想直接看代码可以查看项目源码地址: https://github.com/hetutu5238/rpc-demo.git 要想实现分布式服务调用框架,我们需要了解分布式服务一般需要的功能 ...

  3. How to add VTL tapes on DD6300 & label them into "Oracle_VTL" pool

    Dear all , This is  liulei ,   I was back so , How to add VTL tapes on DD6300 & label them into ...

  4. 移动端一像素边框解决方案[css scale]

    新建一个border.css的文件,然后将代码复制粘贴,然后引用border.css样式文件,然后给需要添加边框的元素,加相应的类样式. tips: border-bottom[一像素下边框]:bor ...

  5. redis介绍及搭建

    redis介绍 Redis最适合所有数据in-momory的场景,虽然Redis也提供持久化功能,但实际更多的是一个disk-backed(以写入磁盘的方式进行同步,实现持久化)的功能,跟传统意义上的 ...

  6. Fescar分布式事务实现原理解析探秘

    前言 fescar发布已有时日,分布式事务一直是业界备受关注的领域,fescar发布一个月左右便受到了近5000个star足以说明其热度.当然,在fescar出来之前,已经有比较成熟的分布式事务的解决 ...

  7. Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda

    Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda Ubuntu16.04安装 参考https://blog.csdn.net/flyy ...

  8. 论文写作+gnuplot制图

    一:论文写作 论文写作推荐使用LATEX+TEXStudio+TEXLive 1.CTeX官方网站:http://www.ctex.org/HomePage ,他类似于python环境 2.TeXst ...

  9. monkey常见API及实例

    一.API简介 LaunchActivity(pkg_name, cl_name):启动应用的Activity.参数:包名和启动的Activity. Tap(x, y, tapDuration): 模 ...

  10. linux上实现jmeter分布式压力测试(转)

    摘要:最近根据公司工作的需求,学习了一些压力测试的知识,目前,公司使用的是jmeter进行压力测试.下面就记录下近期的学习.我想将这次的博文分成三个部分:1.开始测试前的准备(测试环境的搭建)2.在一 ...