首页 > 其他分享 >CF1693F I Might Be Wrong 题解

CF1693F I Might Be Wrong 题解

时间:2022-10-14 14:45:01浏览次数:59  
标签:多于 题解 可以 CF1693F Wrong 等于 序列 操作 数量

感觉是一个比较套路的题目。

思路

很容易就可以胡出一个贪心策略。

每一次操作都选一个从前面开始最长的 \(0,1\) 数量相同的序列进行操作。

看一眼好像样例都能过。

可以考虑如何来证明一下这个东西。

为了方便,首先我们假定操作序列中 \(0\) 的数量多于 \(1\) 的数量。

那么我们的操作就是要将所有在 \(1\) 中的 \(0\) 全部都移到左边。

很显然,我们的操作的每一段要么是 \(0\) 的数量多于 \(1\) 的数量,或者是 \(0\) 的数量等于 \(1\) 的数量(因为 \(0\) 的数量少于 \(1\) 的数量显然不优)。

当 \(0\) 的数量多于 \(1\) 的数量时。

整体所需要耗费的代价也就是 \(0\) 的数量多于 \(1\) 的数量的值,再加一。

我们将 \(0\) 的数量多于 \(1\) 的数量的值设为 \(k\)。

那么,同样的,我们可以将此时的操作序列中进行 \(k\) 次在一个前缀满足 \(0\) 的数量等于 \(1\) 的数量的序列上进行操作,可以观察到,每一次操作后,至少会有一个 \(0\) 被移到左边,而每一次的代价均为 \(1\)。

所以,可以发现,每一次都操作 \(0\) 的数量等于 \(1\) 的数量的序列一定不劣。

然后每一次都找最长的序列,就为最优的方案了。

然后就可以发现,我们的问题变为了给一个序列,需要不断的找到最长的 \(0\) 的数量等于 \(1\) 的数量的序列。

首先 \(O(n \log n)\) 的线段树是显然可以做的。

但由于这道题的最长的 \(0\) 的数量等于 \(1\) 的数量的序列需要满足必须包含整段中的第一个 \(1\)。

我们就有可以想到一个比较套路的方法。

可以发现,我们的最后一次的操作一定是包含所有的 \(1\) 的一个序列。

所以,我们可以假设 \(1,0\) 的个数差是 \(d\)。

那么问题又可以转化为将一个序列使得前面大于等于 \(d\) 个数为 \(0\)。

考虑到我们每次的操作的右端点是单调递增的。

所以每一次我们的操作都是不会影响到前缀值。

可以预处理出前面 \(0\) 的个数比 \(1\) 的个数多的值的最后一个位置。

这样就可以不断的利用前缀转移,时间复杂度 \(O(n)\)。

Code

代码就不放了,还是比较好实现的。

标签:多于,题解,可以,CF1693F,Wrong,等于,序列,操作,数量
From: https://www.cnblogs.com/mfeitveer/p/16791545.html

相关文章

  • [题解]Easy/OSU!
    概率期望题有的可以处理部分的概率,比如说这两个题就可以处理增加值。拿这个题举例子因为\((x+1)^2=x^2+2\timesx+1\)所以我们只需要维护\(x\)的期望,之后就可以推出......
  • Error: could not open 'D:\Environment\java\jre1.8\lib\amd64\jvm.cfg'问题解
    环境变量均已配置成功,但输入java-version时弹出错误Error:couldnotopen'D:\Environment\java\jre1.8\lib\amd64\jvm.cfg'解决办法:按照系统变量里的这个路径找到jav......
  • 洛谷 题解 P1572 计算分数
    题目描述Csh被老妈关在家里做分数计算题,但显然他不愿意坐这么多复杂的计算。况且在家门口还有Xxq在等着他去一起看电影。为了尽快地能去陪Xxq看电影,他把剩下的计算题......
  • [联合省选2021] 宝石 题解(详细解密)
    [省选联考2021]宝石给定一棵\(n\)个点的树,每个点上有一颗种类是\(w_i\)的宝石,宝石种类共\(m\)种,有一个收集器,按照\(P_1,P_2,...,P_c\)的先后顺序收集宝石(就是说......
  • python使用xml.dom.minidom写xml节点属性会自动排序问题解决
    1.背景及问题一个xml文件,过滤掉部分节点,生成新的xml文件,但是生成后,发现节点的属性顺序变化了,根据key的字母信息排了序。如原始信息:<stringtypename="time_type"length......
  • P7077 [CSP-S2020] 函数调用 题解
    首先考虑没有3操作的情况,显然有线段树的\(O(n\logn)\)做法,但是另外有一种\(O(n)\)做法:因为2操作是全局乘所以我们完全可以统计出全局乘了多少然后直接往\(a_i\)......
  • QT QSS样式部分控件生效问题解决记录
    在窗口复杂的时候,建议设置QSS函数setStyleSheet放到 ui->setupUi(this);之前,比如:MainWindow{QFilefile(":/css/TeachingNeedleCard_style.qss");file.op......
  • CF436E Cardboard Box 题解
    CF436ECardboardBox\(n\)个关卡,对每个关卡,你可以花\(a_i\)代价得到一颗星,也可以花\(b_i\)代价得到两颗星,也可以不玩。问获得\(m\)颗星最少需要多少时间。给一......
  • CF1217F 题解
    传送门题意给定一个\(n\)个点的无向图,最初图中无边。两种操作:1xy若\(x,y\)中有边,则删去;否则加入。2xy询问\(x,y\)是否连通。\(x,y\)均加密,真实的\(x,......
  • LG-P3550 [POI2013]TAK-Taxis 题解
    LG-P3550[POI2013]TAK-TaxisSolution目录LG-P3550[POI2013]TAK-TaxisSolution更好的阅读体验戳此进入题面输入格式SolutionCodeUPD更好的阅读体验戳此进入题面存在......