考虑一个20分的\(O(n^2)\)做法:枚举答案区间\([l,r]\),那么显然要把尽可能多的1填入\([l,r]\)。使用前缀和计算\([l,r]\)中\(0\)的个数,那么填入后的价值可以\(O(1)\)计算。

然后区间内非\(0\)的数的和也可以\(O(1)\)计算

考虑优化这个做法:设\(g_i\)表示以\(i\)为右端点时,最大的\(l\)使得区间\([l,r]\)中的\(0\)的个数\(\leq k\)。

随着\(i\)的增大,\(g_i\)显然递增,所以可以在均摊\(O(n)\)的时间内计算\(g\)

如果\(l\geq g_i\),则区间内的所有\(0\)填\(1\)最划算,设\(s1\)为把数组内所有\(0\)视为\(1\)后的前缀和数组,则区间\([l,r]\)的价值为\(s1_r-s1_{l-1}\)。

枚举\(r\),我们需要求出\([g_r-1,r-1]\)中的\(s1\)的最小值。由于\(g_i\)随着\(i\)的递增而递增,所以可以用单调队列维护最小值。

如果\(l \le g_i\),则区间的价值为先把区间的所有\(0\)视为\(-1\),然后把\(k\)个\(-1\)反转为\(1\)后的区间和。(反转后区间和加上\(k*2\))

设\(s2\)为把数组内所有\(0\)视为\(-1\)后的前缀和数组,则区间\([l,r]\)的价值为\(s2_r-s2_{l-1}+k*2\)。

枚举\(r\),我们需要求出\([0,g_r-2]\)中的\(s2\)的最小值。可以用前缀最小值维护。

总时间复杂度\(O(n)\)

lg8945题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

  10. JSOI2016R3 瞎BB题解

    题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...

随机推荐

  1. nohup原理

    Nohup的原理也很简单,终端关闭后会给此终端下的每一个进程发送SIGHUP信号,而使用nohup运行的进程则会忽略这个信号,因此终端关闭后进程也不会退出. Linux的信号 SIGHUP:当用户退出 ...

  2. Django 初步运行过程分析笔记

    2. django运行过程分析第一个过程分析:django启动过程python mangage.py runserver 0.0.0.0:8000这个命令先被python的sys.argv接收起来,保 ...

  3. Typora的一些基础用法

    Typora的简单实用技巧 标题 标题分为h1~h6六个等级,数字越小标题越大. 定义标题有一下几种方式. 方式一:这个标题手敲就在文本前边敲#号,#和文本中间需又空格隔开. 方式二:快捷键,Ctrl ...

  4. (jmeter笔记) websocket接口测试

    1.在进程选择WebSocket Sampler 2.Websocket Sampler 界面 webserver Server Name or IP:输入连接的websocket服务器ip Port ...

  5. beego框架中的注解路由不生效的问题

    在测试中发现 使用注解路由的话 项目需要在gopath路径下的src下才可以 并且配置文件的 runmode = dev 然后执行bee run 在路由文件夹里才会生成commentRouter文件 ...

  6. web开发(1): html简介/ sublime text3使用/VScode使用

    导论 web设计概述 web的核心特征是超链接. web应用:浏览器看新闻:访问网页 非web的网络应用: QQ. 微信 web的组织:W3C 1994年成立,负责管理和维护与web相关的各种技术标准 ...

  7. 为 windows 10 右键菜单加打开DOS窗口

    创建一个批处理文件,输入以下行,保存执行即可. echo off reg add "HKCR\*\shell\ms-dos" /ve /d 打开DOS命令 /f reg add & ...

  8. ubantu下的java的发布

    1.先检查是否安装过 java version 2.卸载的命令 sudo apt-get remove openjdk* 3.创建存放jdk的目录 sudo mkdir /usr/lib/jvm 4. ...

  9. NXOpen获取UFUN的tag

    #include <NXOpen/NXObject.hxx>#include <NXOpen/NXObjectManager.hxx> 1 NXObject* nXObject ...

  10. 星链技术设计(starlink techriage design)

    1.星链  定义:  星链,是美国太空探索技术公司的一个项目,太空探索技术公司计划在2019年至2024年间在太空搭建由约1.2万颗卫星组成的"星链"网络提供互联网服务,其中158 ...