![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分
timidcatt
永远不要放弃战斗
展开
-
Tree Cutting Codeforces Round 936 (Div. 2) 1946C
那么很容易想到的就是进行dfs,后序维护当前点u的子树大小siz[u],如果siz[u]>=x,那么这个点和它父节点之间的边就要断掉,使用的边的数量tot+1,然后令siz[u]=0,使其不影响后序的dfs过程,但如果当前点时根节点也就是1号点,它没有父节点,所以tot不能+1,而且如果以1为根的子树的大小=x。那么接下来考虑在确定了某个x的情况下求需要移除的最少边数,因为按照上面的单调性,移除的边数越少x越大。原创 2024-03-25 11:36:42 · 322 阅读 · 0 评论 -
D2. Dances (Hard Version) Codeforces Round 905 (Div. 2)
我们令a[1]=1时的答案为ans,在我们增大a[1]到m的过程中,可以发现区别就是可能之前a[1]不用删,增大后要删,那么答案相差就是0或1,且操作次数是随着a[1]增大而增加的,所以我们可以二分枚举1到m找到答案+1的位置,也就是找到一个x使得a[1]=x时得到的答案与ans不同,这样前边的数量*ans后边的数量*(ans+1)就是最终的答案。原创 2023-10-24 10:57:15 · 125 阅读 · 0 评论 -
D1. Candy Party (Easy Version) Codeforces Round 896 (Div. 2)
所以在只能减去一个2的幂再加上一个2的幂的情况下,只能去除x的二进制表达里面一段连续的1,所以如果某个x里面有多段1,则无法使所有相等,否则我们对于每个x,找到它最高位再高一位对应的数y,和其最低位的数z,那么如果x>0,其应该给出一个y,并获得一个z,如果x原创 2023-09-11 10:34:00 · 327 阅读 · 7 评论 -
D. Andrey and Escape from Capygrad Round 892 (Div. 2) 1859D
思路:因为我们要走到最远的位置,所以如果我们在某一个传送门的[b,r]范围内,那么我们肯定不会用这个传送门,在原地不动就是最远位置,如果我们要用这个传送门,我们也肯定只会传送到b的位置,即这个传送门能到达的最远位置,所以其实对于某一个传送门,我们只要在[l,b]的范围内,就能到达b,r和a其实是无关项。我们将所区间都合并完成后,任意两个区间都没有重合,这样对于每个其实位置,我门就可以用二分找到他属于哪个区间,他能到达的最远位置也就是区间的右端点,如果不在任何区间内,原地不动就是最远。原创 2023-08-13 14:23:15 · 286 阅读 · 0 评论 -
D. More Wrong Codeforces Round 890 (Div. 2) 1856D
显然这是唯一可以确定大小关系的策略,考虑如何用最少的费用得到答案,首先我们每相邻两个元素询问一下,有1个就说明左边的比右边大,于是记录其中更大的数,这样就得到了每两个数中最大的数,下一轮在每相邻两个数询问一下,这样就得到了每4个数中最大的数,用滚动数组维护每轮循环,直到数组中只剩下唯一的数是,该数即为n个数中的最大数,总费用不会算,但可以确定是花费最小的策略。题目大意:有一个隐藏的排列,给出其长度n,每次可以询问一个[l,r]区间内有多少逆序对,费用为。的情况下输出最大值的下标。,要求在总费用不超过。原创 2023-08-10 22:18:20 · 164 阅读 · 0 评论 -
D. Wooden Toy Festival codeforces1840D
题目大意:有一个长度为n的数组a,可以任意选择的3个数,使所有a[i]距离其中最近的数的最大距离最小,求这个最小距离。原创 2023-06-07 15:11:32 · 483 阅读 · 1 评论 -
C. Tea Tasting codeforces 1795C
题目大意:有两个长度为n的数组a,b,每一轮操作,ai减去对应位置上的bi,最小减为0,然后删除b1,b数组所有元素都向左移,直到b数组中所有数都被删除,问原b数字的每个数分别使a数组减去了多少。原创 2023-02-18 16:17:18 · 464 阅读 · 0 评论 -
G2. Teleporters (Hard Version) codeforces 1791G2
题目大意:有n个传送门,每个门的使用费用为ai,可以传送到i=0或i=n+1的位置,不用门每次移动一个单位花费1,给定费用限额c,问从i=0处出发,最多使用几个门。对所有门取最大值即可。原创 2023-02-09 17:20:52 · 365 阅读 · 0 评论 -
C. Bulmart codeforces 730C
思路:因为每个超市可以任意选择数量,所以我们肯定优先选取单价最便宜的那个,那么我们可以二分答案,先dfs找出顾客所在位置到所有超市的最短距离,然后再判断在二分枚举的距离内的超市按照价格从小到大的顺序拿,直到拿够商品然后判断实际价格有没有超过预算,没超过,即可以把预设距离缩短试试,如果商品那不够,或者超出预算,就要加大预设距离。原创 2022-11-19 20:32:24 · 103 阅读 · 0 评论 -
生日蛋糕 HBCPC2022 7-2
思路:通过打表可以发现,nn属于1到25时的答案分别为1,3,5,8,11,15,19,23,28,33,38,44,50,56,62,69,76,83,90,98,106,114,122,130,139可以发现其分别为长度为2公差为2的等差数列接一个长度为2公差为3的等差数列,接一个长度为3公差为4的等差数列。题目大意:对于m属于1到n,分别需要找到一个最大的k使得k*m原创 2022-10-24 18:34:21 · 283 阅读 · 1 评论 -
D. Reset K Edges codeforces 1739D
思路:因为n的范围是2e5,所以我们可以二分最小层数,每次二分遍历整棵树,按照最小层数的限制对树进行修改,然后比较实际进行的修改次数和限制次数k,但我们可以发现在下图中,如果我们从根开始向下统计每个点的深度,深度等于>限制深度就将点连接1,如果当前的限制深度为2,按照如上操作应该将3,4,6,8四个点连到1上,而实际上如果将7,9,5连到1上,操作次数少1,也就是我们从上向下遍历的时候,我们选择哪个点连接到1对后面的结果是有后效性的,所以无法考虑所有情况。原创 2022-10-06 22:03:33 · 314 阅读 · 0 评论 -
跳石头 UniversalOJ - 148
思路因为答案很好检验,所以我们直接二分答案,左右端点为0,和L,对最短距离进行二分,每次检验时,维护当前点和下一个点两个指针,如果下一个点和当前点的距离大于我们假设的距离,那下一个点是一个要移除的点,统计要移除的点的数量,与要求至多移除的点的数量进行对比来缩小区间。题目大意一个数轴上有n个点,从原点出发,每次只能移动到相邻的点上,直至移动到终点,但是可以移除至多m个点,现给出这n个点的坐标(按升序排列),问移动一次的最短距离的最大值是多少。...原创 2022-07-28 17:42:43 · 163 阅读 · 0 评论 -
C. Schedule Management codeforces 1701c
思路典型的二分答案题,我们二分时间,检查在这些时间内工人最多能完成多少工作,而要完成尽可能多的工作,我们就要让工人优先把自己拿手的全部完成,完成之后,再去做自己不拿手的,枚举每一个工人,算出总完成的工作量和题目要求的工作量比较。题目大意有n个工人要完成m个任务,每个任务都有一个工人是最拿手的,工人做拿手的工作只需要1个小时,否则需要2个小时,每个工人只能同时进行一项任务,所有工人从0时刻一起开始工作,问最少要多少小时能完成所有任务。...原创 2022-07-26 18:20:49 · 285 阅读 · 0 评论 -
Drying POJ - 3104
思路二分查找最小时间,左端点是1,右端点是数组中的最大值,每次枚举,遍历每一件衣服,先减去mid,即自然烘干所用的时间,如果还有剩余,就除以(k-1),因为之前减过了自然烘干的时间,所以k要-1,然后得到需要的总时间,再与预定时间mid作比较。题目大意有n件衣服,给定他们需要多少分钟会干,有一台烘干机,只能同时烘干一件衣服,使他变干的速度变成每分钟相当于自然晾干k分钟。......原创 2022-07-20 15:25:47 · 103 阅读 · 0 评论 -
Strange function HDU - 2899
Show Problem - System Message题目大意:求方程f(x)=6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0原创 2022-07-19 16:47:04 · 97 阅读 · 0 评论 -
数列分段 II LibreOJ - 10014
思路因为ai不超过1e9,所以可以二分查找答案,左端点为数列中的最大值,右端点为数列中所有数的和,每次枚举,依次将每个数相加,如果和大于mid,就段数+1,重新求和,最后判断所求段数和需要段数的关系。给一个长度为n的数列,并给出要把这个数列分的段数k,问每一段的和的最大值的最小值是多少。...原创 2022-07-19 16:25:01 · 120 阅读 · 0 评论 -
Aggressive cows POJ - 2456
思路先把坐标从小到大排序,然后二分查找这个最小距离,二分边界是从0,到最大坐标减最小坐标,每一次枚举,都从小到大遍历坐标,如果这个点减上一个点的距离小于mid,继续遍历下一个点,否则就把遍历到的点变成下一个点。题目大意有c只牛,要把他们放在n个屋子里,每个屋子放一只牛,每个屋子都在一根数轴上,给出他们的坐标,要让每个屋子间的最小距离尽可能的大,问这个最大距离是多少。......原创 2022-07-18 20:22:30 · 150 阅读 · 0 评论 -
Cable master POJ - 1064
思路为了防止精度问题,可以先把每个树的长度都乘以100,然后二分,查找的范围是从1到最长的树的长度,对于每一次枚举,统计用每个树的长度除以mid的结果,与要求的柱子数量进行比较。题目大意有n棵树,树的有效长度已知,要用这些树造k个长度相同的柱子,问每根柱子最长的长度是多少。............原创 2022-07-18 20:01:40 · 113 阅读 · 0 评论