首页 > 其他分享 >lg8945题解

lg8945题解

时间:2023-01-30 12:22:59浏览次数:33  
标签:前缀 题解 s1 lg8945 最小值 枚举 s2 区间

考虑一个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)\)

标签:前缀,题解,s1,lg8945,最小值,枚举,s2,区间
From: https://www.cnblogs.com/celerity/p/17075100.html

相关文章

  • npm ERR! ERESOLVE unable to resolve dependency tree 问题解决
    阅读原文-问题解决与原因分析安装命令增加--legacy-peer-deps修饰npminstall--legacy-peer-deps......
  • 【题解】P4916 [MtOI2018]魔力环
    锐评:小学奥数测验思路环+循环同构,一眼知群论。考虑类似P4980【模板】Pólya定理,用Burnside引理处理。令\(G\)为循环任意次构成的置换群,研究的“点”为染色......
  • 【题解】洛谷-P3270 [JLOI2016]成绩比较
    式子有点长,步骤有点多,所以写一下。题目要求恰好\(k\)人被吊打的方案数,容易想到二项式反演,设\(f(k)\)为钦定\(k\)人其他任意的方案数,\(g(k)\)为恰好\(k\)人的方案......
  • 题解 CF277E【Binary Tree on Plane】
    费用流。可以将原问题转化为类似于匹配的问题,只不过这种匹配并不是一对一的。具体地,将每个点\(u\)拆成两个点\(u_\text{fa},u_\text{son}\),设源点为\(s\)、汇点为\(t......
  • 题解:【CODE FESTIVAL 2016 Grand Final】90 and 270
    题目链接经典增量构造题。不妨从是否存在构造开始考虑:根据多边形内角和的公式容易得出给定的度数和必须等于\((n-2)\times180^{\circ}\),才有解。换一个角度思考,又因......
  • 【题解】P4707 重返现世
    隔壁友校的初一已经开始做这种题了,准老年选手感到恐惧。思路Min-Max容斥。首先考虑到\(|n-k|\leq10\),感觉有大力做法,考虑用Min-Max容斥求期望。设全集\(U\)......
  • [AHOI2009] 中国象棋 题解
    每行每列的炮数量\(\leq2\),那么整个图就可以被分解为一些环和链。考虑答案的二元生成函数,显然环和链分别的生成函数都是平凡的多项式,而答案的多项式无非是加起来后求exp......
  • 黑白树 题解
    看了半天题解代码大概明白他在干啥了。写篇题解总结一下。题面:一棵树,每个点黑色或白色,有权值。五个操作:改变一个点颜色。使点\(x\)所在的同色连通块权值加\(val\)。......
  • CF468E Permanent 题解
    考虑暴力状压DP。按行DP,记录列哪些被选过,可以做到\(O(2^kk^2)\)。注意到某一列扫完了之后这一列选没选过不重要,可以减少这里的状态。简单优化一下,每次选择最少的一列......
  • CF1033E 题解
    题意传送门交互题,给定一个简单连通图,你可以询问一个点集\(s\),返回其导出子图的边数。判断此图是否为二分图:若是,输出其中一部点的集合;否则输出任一个奇环。最多询问\(20......