
二分
文章平均质量分 71
Brightess
毕业于湖南城市学院
目前在某游戏大厂搬砖(
展开
-
洛谷 P1281 书的复制(二分答案 输出方案)
洛谷 P1281 书的复制(二分答案 输出方案)原创 2022-11-30 22:16:04 · 614 阅读 · 0 评论 -
Educational Codeforces Round 128 (Rated for Div. 2) C - Binary String(双指针 前缀和 二分答案求最大值最小问题)
题目来源C Binary String点此进入题面题意:你有一个 字符串 s 由字符 0 和 1 组成。你必须从 字符串的开头 删除几个(可能是 0 个)字符,然后从 字符串的末尾 删除几个(可能是 0 个)字符。删除后,字符串可能会变为空。删除的成本 是 以下两个值 的 最大值:字符串中 剩余的字符 0 的个数;从字符串中 删除的字符 1 的个数。要求:算出可以达到的 最低移除成本 是多少?思路:代码:#de原创 2022-05-22 00:46:57 · 392 阅读 · 0 评论 -
Codeforces Round #791 (Div. 2) D - Toss a Coin to Your Graph...(树形 dp + 二分 + dfs 判环)
题目来源D Toss a Coin to Your Graph…点此进入题面题意:给定一个有向图,每次可以从任意节点出发找一条长度为k-1的路径,要求,求出路径上点权最大值最小是多少。思路:这道题的基本思路是 二分答案 + dfs,根据图的特性重点放在设计 dfs 操作上若所选的点权值越大,越容易符合 k 条边(有 k 次操作),反之,越难符合 k 条边所以满足单调性,并且要最小化最大值可以用二分来搜索最大点权值,并最小化它而对于我们最大点权值 mid,需要 check(mid) 是否满足原创 2022-05-19 22:21:36 · 192 阅读 · 0 评论 -
AcWing 896. 最长上升子序列 II(贪心 + 二分 lower_bound)
本题是AcWing 895. 最长上升子序列的数据强化版,数据范围n<=1e5,可知原来O(n^2)的做法已经行不通了。因此我们至少应当将时间复杂度控制在O(nlogn)以内。思路:贪心 + 二分贪心思想:对于 最大上升子序列,结尾元素越小,越 有利于后面接上其他的数,也就 变得更长。贪心策略:建立一个 q 数组,元素 q[i] 表示 长度为 i 的 LIS 结尾元素 的 最小值,因此我们只需要维护 q 数组即可。具体措施:设 原数组为 a,q 数组中元素 q[i] 表示 长度为 i 的.原创 2022-03-26 16:50:44 · 503 阅读 · 0 评论 -
AcWing 1227. 分巧克力(二分答案求满足条件的最大值)
题意:给定n个长方形,每个长方形的长和宽分别是Hi、Wi,我们要从n个长方形中切出至少k个相同的正方形(满足正方形的边长为整数,且只能裁剪,不能拼凑)。思路:一、二分可行性证明及判断条件根据题目意思我们可以想到随着切出来的每个正方形巧克力边长越长,能得到的块数越少 ,体现在函数图像上就是一个单调递减的函数:对于给定的每一块巧克力,假设其长和宽分别是:hi、wi,如果我们想要切成边长是x的巧克力,那么可以切的块数应该为:(wi / x) * (hi / x) (x作为分母,这是个减函数,块数...原创 2022-03-10 21:45:40 · 246 阅读 · 0 评论 -
AcWing 1221. 四平方和(二分 or 哈希)
题意:给定一个整数n,我们要将这个整数分为四个非负整数的的平方和,输出字典序最小的一组解思路:数据范围是5e6,因此我们要将时间复杂度控制在O(n)以内或者O(nlogn)以内,本题可以考虑用二分来做,也可以用哈希来做。不过如果用哈希表做法的话则一定不能用STL中的哈希表,因为常数过大容易超时,应当手写哈希。二分的复杂度是O(nlogn),而手写哈希是O(n)的。两个算法的思想其实是一致的。先用二分来分析一下这道题。先考虑一下 a, b, c, d 四个数的范围,由于 N<=5e6,因..原创 2022-03-10 18:35:58 · 270 阅读 · 2 评论 -
AcWing 730. 机器人跳跃问题(典型二分答案求满足条件的最小值)
题意:机器人初始能量为E,下一个建筑高 H,如果当前能量大于H,那么跳到下一个建筑的能量变为 E + (E-H),否则能量为E-(H-E),其实两种情况可以归结为一种情况:2E - H,目标是到达第N个建筑,且 在这个过程中能量值不能为负数,问机器人初始能量E最少为多少?思路:对于 “最少/最大是多少” 这类问题,可以想一想是否能用二分来做那么如何确定是否能用二分呢?让我们回顾一下二分的具体步骤是什么:①判断是否具有二段性的性质,或者单调性(如果一个题目具有单调性那么一定可以用二分来做,如...原创 2022-03-10 12:31:43 · 481 阅读 · 0 评论 -
二分查找思想 + AcWing 789. 数的范围
二分查找的思想:①确定一个区间,使得我们要找的目标值一定在这个区间内出现②找一个性质,满足以下两点(整数二分和实数二分通用):(1)性质具有 二段性(100%一定成立)二段性含义:在一段区间中,前面一段连续的部分满足这个性质,后面一段连续的部分不满足这个性质,两部分无缝衔接,就如下图:(2)二分的答案 是 二段性的分界点。以整数二分为例子,有两种情况:“红色区间的右端点” 以及 “绿色区间的起点”,如下图:对于整数二分,二分答案有两种情况,对于不同的情况我们对应有着不同的做法。原创 2022-03-09 12:14:46 · 575 阅读 · 0 评论 -
AcWing 340. 通信线路(第k+1大值最小 二分答案 + 堆优化dijkstra)
题意:求一张无向图上 所有从 1→n 的路径中,第 k+1 大的边权的最小值。题意:首先考虑暴力怎么做:搜出所有路径再找最小值,但我们发现数据规模太大,做不了。于是我们可以从最小值入手,也就是采取二分答案,利用二分将这个值求出来。题目中给出边权的最大值是1e6,我们将二分的区间范围定为[0, 1e6+1]假设我们二分出一个值x,那意味着x应该满足:从 1→n 的路径中应该存在一条路,使得这条路上 最多有 k 条大于x的边。(二分值需要满足的属性)那么如何刻画这个属性呢?可以着眼于图上的边权是原创 2022-02-23 22:01:49 · 633 阅读 · 0 评论 -
AcWing 244. 谜一样的牛(树状数组+二分查找)
题意:思路:我们用h[]存推理出所有牛的身高,a[i]表示当前第i头牛左边有多少牛比较低,c[]表示树状数组。我们发现,如果说 第i头牛的左边有a[i]头牛比它矮,那么**它的身高h[i]**要满足两个条件:①在数值1~n中排行第a[i] + 1小。②没有在h[i+1],h[i+2],…,h[n]中 出现过。(由于我们是倒序遍历,h[i+1]~h[n]这些第i头牛右边所有牛的身高已确定,当然不能选了)大体流程:我们倒序遍历每个数a[i]:①每次从剩余的数中找到第k..原创 2022-02-14 11:21:00 · 544 阅读 · 0 评论 -
AcWing 1010. 拦截导弹(线性dp 最长上升子序列模型 贪心 二分)
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。输入格式共一行,输入导弹依次飞来的高度。输出格式第原创 2022-02-08 00:23:54 · 244 阅读 · 0 评论 -
2021第十七届HNCPC(更新中)
A 1157 12强赛Description这次世预赛咱们再次打进了12强,12支队伍分为两个小组,各6支队伍,每个小组进行主客场双循环比赛,赢一场积3分,平一场积1分,输则积0分。现在我们来写一个简单的程序,根据一个小组所有比赛的结果,输出各队的积分、净胜球总数、进球总数。一个队的净胜球为该队总进球数减去总失球数。Input第一行一个整数t,表示有t组测试数据。将小组的 6 个国家编号为 A~F 6 个字母,每组数据15行,为小组的两两主客场比赛。每行为空格隔开的两个大写字母与四个整数,表示原创 2022-01-19 21:33:44 · 2525 阅读 · 0 评论 -
剑指Offer. 数字在排序数组中出现的次数(STL方法 or 库函数 or 整数二分)
统计一个数字在排序数组中出现的次数。例如输入排序数组 [1,2,3,3,3,3,4,5] 和数字 3,由于 3 在这个数组中出现了 4 次,因此输出 4。样例输入:[1, 2, 3, 3, 3, 3, 4, 5] , 3输出:4最近学习了c++中的STL容器和库函数,对于这两者的熟练掌握可以有效提高算法竞赛中用c++编写程序的效率。现在用两种容器:vector,multiset和库函数lower_bound和upper_bound做一下这道题。注意这道题使用了c++中的类编写,不可以直接在编原创 2021-08-19 16:35:37 · 172 阅读 · 0 评论 -
AcWing 790. 数的三次方根(浮点数二分,特殊值特判)
当n∈(-1,1)的时候,一定需要特殊判断,不然会出现错误答案(当n=0.001时)。原因:当n在这个区间的时候,n对应的答案(0.001的答案为0.1)并不在区间内,其三次方根答案比n还要大,因此[l,r]范围要扩大到[-1,1],区间中才会有答案。//浮点数二分模板题//当-1 < n < 1 特殊判断#include <iostream>#include<cstdio>using namespace std;bool check(double mid原创 2021-08-14 20:43:57 · 226 阅读 · 0 评论 -
AcWing 789. 数的范围(整数二分查找左右边界)
给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。如果数组中不存在该元素,则返回 -1 -1。输入格式第一行包含整数 n 和 q,表示数组长度和询问个数。第二行包含 n 个整数(均在 1∼10000 范围内),表示完整数组。接下来 q 行,每行包含一个整数 k,表示一个询问元素。输出格式共 q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回 -1 -.原创 2021-08-14 19:15:41 · 176 阅读 · 0 评论