二分
小菜鸡加油
菜鸡
什么都能折磨
展开
-
C. MP3(二分+离散化)
https://codeforces.com/contest/1199/problem/C思路:首先这个题卡原创 2021-06-04 21:06:34 · 124 阅读 · 0 评论 -
E. The Contest(调整成递增序列)
https://codeforces.com/problemset/problem/1257/E思路:lis二分板子#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#include<al原创 2021-05-23 14:54:46 · 167 阅读 · 0 评论 -
C. Choosing flowers(贪心+二分边界)
https://codeforces.com/problemset/problem/1379/C思路:考虑答案情况,假如a[i]都买了,剩下的钱肯定挑一个b[i]最大的买完。我们注意到,最优的答案应该是剩下的钱都买某个物品了。那么我们可以枚举某个物品,对于其他>这个物品的b[i]的贡献能就都拿,剩下都拿这个物品的b[i].注意一下二分的边界。找大于等于的第一个位置再-1#include<iostream>#include<vector>#include<原创 2021-04-30 17:49:34 · 105 阅读 · 1 评论 -
D. A Game with Traps(贪心+二分+差分模拟)
https://codeforces.com/contest/1260/problem/D思路:二分后对于答案要拆的区间是要+3(过去回来再带走)剩下的就是走1次#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<原创 2021-04-19 16:29:00 · 110 阅读 · 0 评论 -
D. Minimax Problem(二分+状压枚举子集)
https://codeforces.com/contest/1288/problem/D参考lc哥:https://blog.csdn.net/qq_45458915/article/details/104012920#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#in原创 2021-04-18 18:50:33 · 95 阅读 · 0 评论 -
D. Odd-Even Subsequence(思维+二分)
https://codeforces.com/problemset/problem/1370/D思路:对于答案进行二分。只要奇数和偶数一个满足<=x的check就好。分别计算奇数和偶数制造出<=x的序列长度,如果>=k,说明还能减少#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include原创 2021-04-14 14:44:28 · 262 阅读 · 0 评论 -
C. Tavas and Karafs(二分)
https://codeforces.com/problemset/problem/535/C#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#include<algorithm>.原创 2021-04-13 17:54:11 · 114 阅读 · 0 评论 -
1436D - Bandit in a City(思维+二分+细节)
https://codeforces.com/problemset/problem/1436/D思路:直接二分最后答案。check:后序遍历从底下网上return。return 到该点是该点做多还能有的数量。累加好之后判是否超了。注意sum的累加会炸longlong,同时128超时。#include<iostream>#include<vector>#include<queue>#include<cstring>#include&原创 2021-04-06 12:18:30 · 152 阅读 · 2 评论 -
1251D - Salary Changing(二分+贪心)
https://codeforces.com/problemset/problem/1251/D思路:二分即可。注意check的时候上界大于x的时候最后分配要取max(x,该人的下界)#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#原创 2021-04-05 15:56:35 · 123 阅读 · 0 评论 -
D. The Best Vacation(贪心+二分细节)
https://codeforces.com/problemset/problem/1358/D思路:二分可以想到,前缀也可以看出。可是如果对于每个点的全部包含点都去枚举,肯定不行。这里有一个贪心。考虑答案先找到一段最大的di,如果结尾不放在di的最后一天,会存在>=的情况。也就是说最后一天放每个月的最后一天不会更差。所以最后的答案一定是在结尾在每个月的最后一天。这样就变成了On枚举。一个很细节的边界。二分的时候取l=1,这样做算sum[l-1]的时候会导致该点是默认的0,导致会减成负数从原创 2021-03-31 16:18:39 · 197 阅读 · 0 评论 -
773A - Success Rate(数学+二分)
https://codeforces.com/problemset/problem/773/A思路:开始的时候转化成了(x+f)/(y+t)=p/q----->q*(x+f)==(y+t)*p--->然后拆开,同时还有一个t>=f的式子。但是前者拆开之后要求一个最小的p的倍数满足分子,二分也不好搞。考虑到p,q互质,所以(x+f)=k1*p;(y+t)=k2*q;k1==k2---> 两个式子{ f=k*p-x; t=k*q-y}单调性明显,可以二分了。注意...原创 2021-03-30 21:44:53 · 270 阅读 · 0 评论 -
578A - A Problem about Polyline(数学+二分+细节)
https://codeforces.com/problemset/problem/718/A方程有两种 y=x-2pc , y=-x+2pc转化成求值式子就是c=(x-y)/2p , c=(y+x)/2p ----p越大c越小 并且c要>=y .单调性直接二分。然而我卡了好久二分。对于第一份二分来说,要注意求出来的ans1最后要判一下是否>=y。ans2没事。看了一下别人的二分,我以为是二分的锅,调的时候混合用二分了,死得更惨。买个教训:二分大体有两种流派,不要混合.原创 2021-03-28 16:32:06 · 111 阅读 · 0 评论 -
D. Devu and his Brother(思维+三分)
https://codeforces.com/problemset/problem/439/D思路:不是很能想到贪心阿。但是看这个范围。感觉像二分枚举。首先定一个假设最终到达的值为temp。那么可以得出Ans=Σtmp-a【i】(a【i】<tmp)+Σb【i】-tmp(b【i】>tmp);答案在temp+1/+2/-1/-2都会变大。是个单峰函数。于是上三分#include<iostream>#include<vector>#include<原创 2021-03-28 14:32:58 · 143 阅读 · 0 评论 -
479D - Long Jumps(思维+二分找数字)
https://codeforces.com/problemset/problem/479/D思路:对于找数,直接二分就好。一个细节,找不到的时候找x+y,x-y的差值,对于x-y要判是否在>=0或者在<=l的范围内.#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>原创 2021-03-27 20:38:25 · 107 阅读 · 0 评论 -
1041D - Glider(思维+二分+前缀和)
https://codeforces.com/problemset/problem/1041/D思路:可以发现,选择的起点在当前某个线段区间的左端点一定不会更差。于是On枚举起点位置,快速找到其终点在的区间。下降的过程满足单调性,于是二分最终所在的区间。中间的check用前缀和处理区间的差值的累加就可以O1check了。#include<iostream>#include<vector>#include<queue>#include<cstr原创 2021-03-27 15:45:49 · 142 阅读 · 0 评论 -
D2. Coffee and Coursework (Hard Version)(思维+贪心)
https://codeforces.com/problemset/problem/1118/D2思路:第一眼能看出答案能二分把。然后这题和前缀和不同,虽然每次减的是固定的,但是前缀先加起来会减出负数,而答案+0;二分后考虑贪心check。有x天,每天能加上最大的没有损耗的一个,一共x个。然后喝下一杯就是有一个损耗的。以此类推。sort后每次分组获取贡献。#include<iostream>#include<vector>#include<queue&原创 2021-03-27 14:51:51 · 255 阅读 · 0 评论 -
B. Pipeline(二分+贪心)
https://codeforces.com/problemset/problem/287/B思路:贪心拿最大的。每次取x个管子的式子为1+(2*k-x+1)*x/2-x,二分即可#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#in原创 2021-03-20 11:10:57 · 105 阅读 · 0 评论 -
D. Exams(思维+二分+贪心)
https://codeforces.com/contest/732/problem/D思路:开始以为是什么dp问题,发现复杂度是不够的。这个情况下答案应该是有单调性可以二分的。考虑check。设枚举x天完成。我们将要在x天内的(所有要完成考试的时间)更新成最后一次(deadline)碰到空闲天就复习。碰到该考试的deadline你就只能去考了。如果不够时间就调整二分时间。如果够这门考试的时间就可以拿来复习其他科目。最后判一下该轮是不是所有考试都考过了。(wa22)#inclu原创 2021-03-18 11:17:47 · 111 阅读 · 0 评论 -
A. Increasing by Modulo(思维+二分+贪心)
https://codeforces.com/problemset/problem/1168/A思路:每次都尽量让最后面的数最小.现在假设次数是x 如果a[i]<a[i−1],那么我们必须使用至少a[i−1]−a[i]次来使得非降.并且我们一定希望a[i]最小,所以如果可以的话就直接把它变成a[i−1] 如果a[i]>a[i−1],那么如果能把它变成a[i−1]是最好的,这样需要的次数是a[i−1]+m−a[i].如果变不成就保持原样. 如果a[i]=a[i−1原创 2021-03-17 00:32:58 · 186 阅读 · 0 评论 -
D. Yet Another Monster Killing Problem(思维+二分细节+贪心+前缀)
https://codeforces.com/problemset/problem/1257/D思路:贪心,先将每个hero按照攻击从小到大排,相同的就按耐力持久。于是On扫一遍怪物序列,对于当前i这个怪物,对hero数组中二分出第一个大于等于这个怪物的英雄位置,然后快速找到这里面的最持久的英雄。判断能否打败这个怪物。直到怪物序列够长了得换英雄。快速找最持久的来一个后缀最大预处理就好。细节:每次找的时候要更新当前怪物,且更新的是其连续长度的最大值。如果新开了一个怪物注意更改的值。原创 2021-03-04 17:40:19 · 305 阅读 · 3 评论 -
1D Sokoban(思维+两个序列二分)
https://codeforces.com/contest/1494/problem/C思路:On枚举放到b数组的一个位置,然后二分出此时一部分块推到这部分的末尾,然后通过块的长度在b数组里二分出位置。统计一部分。另一部分是原来就在指定位置上的。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#includ原创 2021-03-03 16:03:58 · 444 阅读 · 1 评论 -
D. Max Median(思维+二分中位数+前缀)
https://codeforces.com/contest/1486/problem/D题意:给你一个长度为n的序列。让你找到一个长度不小于k的连续子序列,使得它的中位数最大。一个长度为n的序列的中位数是排序后第⌊2n+1⌋位置的值.思路:二分中位数,然后将>=mid的设为1,小于mid的设为0.然后看是否存在一段区间和>0的且其长度>=k.对于是否存在长度>=k且区间和>0怎么判断?预处理前缀和。然后枚举右端点i,如果前面[1,i-k]存在一个原创 2021-02-24 10:32:00 · 395 阅读 · 0 评论 -
美丽的路径(二分中位数+check by dfs)
https://ac.nowcoder.com/acm/contest/9985/A有n个点,m条边,每个点有一个全值。起点是s,终点是t,设美丽路径为s到t路程中第k/2+1小的数,求最大的美丽值是多少。思路:第k/2+1小的数,sort后其实就是中位数把。关于中位数的题一般是二分的trick。过一段时间我把二分中位数,二分平均值的题再补一下。然后题目的情况如果有两个连着的1,因为可以来回一直走这两个1,所以最后结果>mid-->l=mid;然后另外一种情况就是要使1的个数原创 2021-02-24 00:49:53 · 189 阅读 · 2 评论 -
武辰延的字符串(思维+二分字符串前缀)
众所周知,武辰延很喜欢字符串。这天,他对着两个字符串 s 和 t 发呆,他发现这两个串的前缀有很多相似的地方,s 的两个前缀连接起来竟也是 t 的前缀。武辰延想知道有多少对 s 的非空前缀连接起来是 t 的前缀。形式化地讲,我们把si看作字符串 s 长度为 i 的前缀。对于一对前缀 (si,sj)(允许 i=j)而言,当满足si+sj=ti+j时,我们认为这两个 s 的前缀拼接后等于 t 的一个前缀。两对 s 的前缀 (si,sj)与 (si′,sj′)不同当且仅当 i...原创 2021-02-20 00:50:16 · 199 阅读 · 1 评论 -
C2. Guessing the Greatest (hard version)(思维+二分+细节的坑)
https://codeforces.com/contest/1486/problem/C2思路倒是不难想阿。上次的教训一看就是个二分把。一般的二分没包括mid,这题需要包括mid。每次包括mid之后看第二大值的问题有没有变。然后就可以二分了。C1可能变区间mid去做,c2的话其实发现每次都带着最开始问的不变的第二大pos和l,r去比较。但是有个坑。我比赛的时候一直wa1,赛后也一直wa2.就是[l,l][r,r]是不能出现的所以开始的时候有个边界。下面代码中的注释中有写虽然原创 2021-02-19 20:57:01 · 332 阅读 · 6 评论 -
C. Pinkie Pie Eats Patty-cakes(二分+贪心/贪心推公式)
https://codeforces.com/problemset/problem/1393/C思路:看到最小值最大,dna起了反应。但是check怎么写呢?状态很多,尝试贪心。贪心发现对于相同的数,平均分才能尽量使最终答案变大。(均分构造)举个例子:1 1 1 1 2 2 2 2 3 4 5 6 7 81 2 (3 4) 1 2 (5 6) 1 2 (7 8) 2 61 1 1 2 2 2 3 3 3123 123 123这样相同数间隔放能保证最优。于是..原创 2021-02-09 12:07:18 · 334 阅读 · 1 评论 -
D. Cleaning the Phone(枚举+前缀和+二分)
https://codeforces.com/contest/1475/problem/D经典两个物品状态的总最优题:#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#include<a原创 2021-01-31 22:51:41 · 347 阅读 · 0 评论 -
Xenia and Colorful Gems(思维+排列枚举+二分)
https://codeforces.com/problemset/problem/1336/B题意:给你三个数组长度分别为r , g , b [r,g,b(1≤r,g,b≤1e5],从中分别选出一个数x,y,z,问(x−y)2+(y−z)2+(z−x)2最小为多少?思路:当三个数字,他们三个比较接近的时候,上面的那个式子才会尽可能的小。而选定的这三个数字一定有大有小,我们不知道哪个大哪个小。但是通过枚举也就是全排列的可能性。因此我们固定一个数组,去另外两个数组中,一个数组寻找第一个大于原创 2021-01-31 21:00:24 · 179 阅读 · 0 评论 -
P1868 饥饿的奶牛+C. 青蛙国王(类子序列线性dp+二分优化)
https://www.luogu.com.cn/problem/P1868题目描述有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字。现用汉语翻译为:有NN个区间,每个区间x,yx,y表示提供的x\sim yx∼y共y-x+1y−x+1堆优质牧草。你可以选择任意区间但不能有重复的部分。对于奶牛来说,自然是吃的越多越好,然而奶牛智商有限,现在请你帮助他。输入格式第一行一个整数N。接下来N行,每行两个数x,y,描述一个区间。...原创 2021-01-30 20:51:15 · 627 阅读 · 2 评论 -
C. Mixing Water(思维+二分)
https://codeforces.com/problemset/problem/1359/C重做一回的时候发现可以不推公式。思路:可以观察到偶数杯的温度不变,奇数杯的温度随着杯数增加温度不断下降。所以二分<=t的第一个数。然后对这个数上下开10个边界取最小。注意二分只考虑奇数,所以二分出来的mid,用mid*2+1去算当前温度.#include<iostream>#include<vector>#include<queue>#includ原创 2021-01-25 11:00:05 · 316 阅读 · 2 评论 -
B. Password(字符串哈希+二分)
https://codeforces.com/problemset/problem/126/B题意翻译Asterix,Obelix和他们的临时伙伴Suffix、Prefix已经最终找到了和谐寺。然而和谐寺大门紧闭,就连Obelix的运气也没好到能打开它。不久他们发现了一个字符串S(|S|<=1000000),刻在和谐寺大门下面的岩石上。Asterix猜想那一定是打开寺庙大门的密码,于是就大声将字符串朗读了出来,然而并没有什么事发生。于是Asterix又猜想密码一定是字符串S的子串T。P原创 2021-01-25 09:14:31 · 462 阅读 · 0 评论 -
A. 打印收费(思维+二分+后缀最小/st/线段树)
思路:首先找到一个最近的小于等于当前纸张的价格,然后找一个办法快速统计后面的价格中最小值就好了。感觉这题cf出过阿。找到位置,由于存在单调性,采用二分即可。要注意一下二分找不到的位置。比较推荐的常数小的是思维的维护后缀最小值。献上我池巨的代码:维护后缀最小值O(1)查询比较即可。讲一下其他方法,维护一段序列的最小值并查询,可以st表可以线段树,试了一下st表。但是二分卡了边界。(这就去更一下二分的文章)原来wa了8发的原因:找不到的时候l=n+1;虽然取了边界,l--,...原创 2021-01-20 22:27:42 · 112 阅读 · 1 评论 -
牛客挑战赛45友人(思维+二分+位运算)
思路:出了位运算其实需要按位进行考虑,不过一拿到这个题的时候变量较多,不好下手。但是如果能定下一个量,就可以方便了。考虑二分z的上界,假如知道了z的上界,那么后面的式子就可以通过位运算的角度去枚举出最优解。那么怎么去知道z的上界,由于是等差数列,所以整个式子可以变成一个单调递增的(sort)。而且贪心去考虑,优先把数字大的变成min(Ai,z)更优。于是sort从小到大序列,然后从后面开始,o(n)枚举长度,在一个长度内确定下来能否满足有z使得前面不变的和+后面变小的和<=y。从而获得z的..原创 2020-11-14 12:40:36 · 137 阅读 · 0 评论 -
C. The Delivery Dilemma(思维+二分)
https://codeforces.com/contest/1443/problem/C题意:点外卖或者自己去拿,每个菜有两个时间,求总时间最小。思路:定下上界是全部菜自己去拿,在此基础上二分,如果当前菜的外卖时间<mid,就让他送,不必花费时间,但是如果>mid,就要自己去拿,算出自己去拿的时间,和mid比较。#include<iostream>#include<vector>#include<queue>#include<cst原创 2020-11-04 13:06:29 · 623 阅读 · 0 评论 -
2020ccpc威海 H Message Bomb(思维+模拟)
题目大意:有n个人,m个组,接下来会进行q次操作:1.第x个人 加入 第y个组2.第x个人 退出 第y个组3.第x个人 对 第y个组内 所有的人(x除外)发送一条信息最后输出每个人都收到了多少条信息考场上这道题队友直接set差分秒了...然而我并没懂。事后补题给了另外一种二分的想法。Guang巨给了虚点的想法(真好,又有新的东西要补了quq思路:开出map和vector维护每个人进每个组的时间和每个组发消息的时间。然后统计的时候放在这个人退出组的时候统计(如果结束了还原创 2020-10-29 10:30:34 · 451 阅读 · 0 评论 -
C. Discrete Acceleration(二分)
https://codeforces.com/contest/1408/problem/C思路:二分枚举时间t,考虑甲通过这个时间走过的距离和乙通过这个时间走过的距离,看是否大于给的长度,如果大于就r=mid;反之l=mid;细节上注意a[n+1]=m,路的开始的点是0;主要还是细节#include<iostream>#include<vector>#include<queue>#include<cstring>#include<原创 2020-10-01 22:02:29 · 1310 阅读 · 2 评论 -
ZOJ-4029-Now Loading!!!(2018浙江第15届省赛)(思维+枚举优化+二分)
https://zoj.pintia.cn/problem-sets/91827364500/problems/91827370263DreamGrid hasintegers. DreamGrid also hasqueries, and each time he would like to know the value offor a given number, where,.InputThere are multiple test cases. The first...原创 2020-09-26 23:32:47 · 225 阅读 · 0 评论 -
A. Office Keys(贪心+二分枚举)
https://codeforces.com/problemset/problem/830/A题意翻译在一条直线上有n人和k个钥匙。每个人都想到达位于线路上的办公室。要做到这一点,他需要到一个有钥匙的点上,拿到钥匙然后去办公室。一旦有人拿走钥匙,任何人都不能拿走钥匙。 人们每1秒移动一个单位距离。 您需要确定所有人用钥匙到达办公室的最短时间。 如果两个人同时拿到钥匙,他们中只有一个可以拿钥匙。而一个人只能通过那个点而不能获取钥匙。 翻译贡献者UID:46780输入输出样例输入 #1复制原创 2020-09-10 14:39:31 · 231 阅读 · 0 评论 -
A. Voltage Keepsake(二分枚举)
https://codeforces.com/problemset/problem/772/A输入输出样例输入 #1复制2 12 22 1000输出 #1复制2.0000000000输入 #2复制1 1001 1输出 #2复制-1输入 #3复制3 54 35 26 1输出 #3复制0.5000000000说明/提示In sample test 1, you can charge the first device.原创 2020-09-09 22:11:13 · 177 阅读 · 0 评论 -
D. Too Easy Problems(思维+二分枚举)
https://codeforces.com/problemset/problem/913/D题目描述You are preparing for an exam on scheduling theory. The exam will last for exactlyTTmilliseconds and will consist ofnnproblems. You can either solve problemiiin exactlyt_{i}timilliseconds o...原创 2020-09-08 21:44:03 · 223 阅读 · 0 评论