二分
文章平均质量分 57
Jozky86
这个作者很懒,什么都没留下…
展开
-
P4064 [JXOI2017]加法
P4064 [JXOI2017]加法 题意: 题解: 要求找最小值尽可能大,很明显二分,现在是如何判断二分出来的答案的正确性 对于一个二分出来的答案mid,要求对k个区间进行操作后,最小值大于mid,我们可以这样实现,对于第i位,(前i-1位已经处理完毕,且前i-1位均大于等于mid),此时我们要找的区间是要包含第i位的,也就是区间的左端点一定小于等于i,而对于右端点,一定是越远越好,右端点越远,就可以让更多的数增加,更容易使得所有数都大于等于mid 怎么才能实现合理选取区间这个操作,我们用一个最大堆,每次原创 2022-03-02 22:03:59 · 602 阅读 · 0 评论 -
CF1550E Stringforces
CF1550E Stringforces 题意: 设 s 是一个由前 k 个小写字母构成的字符串,v 是前 k 个小写字母中的某一个。定义MaxLen(s,v)\mathrm{MaxLen}(s,v)MaxLen(s,v) 表示 s 所有仅由字母 v 构成的连续子串的最长长度。 定义 s 的价值为所有 MaxLen(s,v)\mathrm{MaxLen}(s,v)MaxLen(s,v) 的最小值,其中 v 取遍前 k 个小写字母。 现在给定一个长度为 n 的字符串 s,s 中字母要么是前 k 个小写字母中的原创 2021-10-20 18:54:18 · 107 阅读 · 0 评论 -
CF1486D Max Median
CF1486D Max Median 题意: 给定一个长度为 n 的序列 a,求所有长度 ≥k 的连续子序列中,中位数的最大值。定义中位数是一个长度为 x 的序列升序排序后的第 ⌊x+12⌋\left\lfloor\frac{x+1}{2}\right\rfloor⌊2x+1⌋位的值。 题解: 我第一反应是二分去判断,但是不知道该怎么判断中位数这个条件 题目中定义的中位数的排序后最中间的数,假设中位数为mid,也就是说有一半以上的数>=mid,那二分不就好判断了,我们二分mid值,然后将所有小于mi原创 2021-10-13 12:41:42 · 145 阅读 · 0 评论 -
CF1592D Hemose in ICPC ?
CF1592D Hemose in ICPC ? 题意: 给你一棵n个节点的树,定义dis(a,b)=a,b两点之间路径的gcd的最大值 最多可以询问12次,每次询问给出一个点集合,系统返回当前点集的所有点对中的最大Dist,最终需要输出a,b两点,求最大化的Dist(a,b) 题解: Dist的求法是路径gcd,而gcd是只减不增的,所以最大化的Dist,最大的gcd其实就是求最大的边权 现在的问题就是让你通过询问找到最大的边 因为每次我们可以询问一个点集,树上属实不方便,我们可以通过欧拉序(注意欧拉序写原创 2021-10-06 22:42:29 · 148 阅读 · 0 评论 -
CF1479A Searching Local Minimum
CF1479A Searching Local Minimum 题意: 题解: 先说结论: 若l,r满足: al−1>al,ar<ar+1a_{l-1}>a_{l},a_{r}<a_{r+1}al−1>al,ar<ar+1 al,al+1,....,ara_{l},a_{l+1},....,a_{r}al,al+1,....,ar互不相同 则一定又一个满足题目条件的k会出现在区间[l,r]中,这就是我们要找的区间 现在我们开始证明: 利用反证法:假设对原创 2021-10-03 11:13:41 · 116 阅读 · 0 评论 -
P2498 [SDOI2012]拯救小云公主
P2498 [SDOI2012]拯救小云公主 题意: 一个row * line的矩形,英雄在左下角(1,1),公主在右上角(row,line),有n个位置是boss。英雄现在要去公主那里,但是要避开boos,英雄决定找一条路径使到距离boss的最短距离最远。雄走的方向是任意的。 问英雄的路径离boss的最远距离 题解: 不难看出是二分,我们二分距离boss的距离mid,那怎么判断呢? 有个很巧妙的方法 英雄不能去的位置就是以boss为中心,mid为半径的圆,因为有n个boss,也就是有n个园,如果这n个圆可原创 2021-09-08 21:35:35 · 190 阅读 · 0 评论 -
Average
Average 题意: 矩阵W的值可以通过数组a和b得到,W[i][j]=a[i]+b[j],现在求W的一个子矩阵,平均值最大,且子矩阵必须满足宽度至少是x,高度至少是y,计算最大平均值 题解: 那答案就变成了分别对a和b对应的区间求个平均值然后相加 问题就变成了,找a的一个长度至少为x的平均值的子矩阵和b的一个长度至少为y的平均值最大的子矩阵 二分平均值S,然后令a[i]编程a[i]-S,然后看是否有和>0的长度至少为x的子矩阵 总复杂度为O(nlogW) 代码: #include<bits原创 2021-07-28 12:57:22 · 130 阅读 · 2 评论 -
吉吉王国(二分+树形dp)
吉吉王国 题意: n个点,m个边,有边权,现在要求叶子节点无法与1号点连通,要求切断的总长度不能超过m,且切断的最长的长度尽可能断 题解: 题意的前半部分可以确定是树形dp,后半部分可以确定为是二分 树形dp部分和这个题差不多 Rinne Loves Edges 我们二分一个长度的上限,然后在dp中限制,判断二分的值是否合理 代码: #include <bits/stdc++.h> #define endl '\n' using namespace std; const int maxn=1原创 2021-07-10 17:10:17 · 254 阅读 · 0 评论 -
Defuse the Bombs Gym - 102822D
Defuse the Bombs Gym - 102822D 题目: 给你n个数,现在每轮会有三个操作: 1.选择一个数,使他加一 2.所有数减一 3.当有一个数变成负数时结束操作,否则回到第一步 问最多能进行几次第一步? 题解: 题目相当于在问最多能进行几轮, 这个题不大好想,我们可以转换下思路,题目说的是先选一个数加1,然后其他数减一,然后问最多能加几轮,那我们可不可以这么想,我们先将所有数减,最后再加,看是否所有数都大于等于0。我们设最多加了x轮,那么所有数都要减x,然后我们看所有比0小的数,他们与0原创 2021-07-09 14:16:58 · 312 阅读 · 0 评论