ICode9

精准搜索请尝试: 精确搜索
  • 【整数二分】Acwing789.数的范围2022-05-07 20:06:23

    Acwing789.数的范围 题解 最左边界,每次 mid >= x 则 r = mid, 再找左边是否有符合要求的边界。 最右边界,每次 mid <= x 则 l = mid, 再找右边是否有符合要求的边界。(注意当l = r-1时 ,(l+r)>> 1 == l 故我们需要 mid = (l + r)>> 1 + 1 ) 写法一:多加一个else(易懂) #include <iostre

  • LibreOJ 10011 愤怒的牛 二分2022-05-07 03:00:25

    农夫约翰建造了一座有 \(n\) 间牛舍的小屋,牛舍排在一条直线上,第 \(i\) 间牛舍在 \(x_i\) 的位置,但是约翰的 \(m\) 头牛对小屋很不满意,因此经常互相攻击。约翰为了防止牛之间互相伤害,因此决定把每头牛都放在离其它牛尽可能远的牛舍。也就是要最大化最近的两头牛之间的距离。 牛们并

  • HDU 2852 KiKi's K-Number2022-05-05 19:03:58

    题目传送门 一、解题思路 挖坑待填 二、在树状数组内二分 三、在树状数组外二分

  • 二分查找/搜索使用方法2022-05-04 19:34:00

    难点:   二分查找的难点在于细节,不等号是否应该带等号   如mid加一还是减一,while到底用<=还是<; 常用使用场景:寻找一个数,寻找左侧边界,寻找右侧边界 0.二分查找框架 注意点: 1. 不要出现else,把所有的情况用else if写清楚 2.  “...”标记的地方,是可能出现细节的地方,也是出现坑的

  • 礼物(枚举,二分)2022-05-04 11:32:48

    题意 农夫约翰想给他的 \(N\) 头奶牛购买礼物,但是他的预算只有 \(B\) 元。 奶牛 \(i\) 希望获得的礼物的价格为 \(P_i\),运输成本为 \(S_i\),也就是说约翰要帮奶牛 \(i\) 买礼物,共需花费 \(P_i+S_i\) 元钱。 约翰有一张特殊的优惠券,如果使用该优惠券来订购一份礼物,那么该礼物的价格

  • 二分2022-05-03 19:35:00

    二分 整数二分 二分查找是用 $ logn $ 的时间复杂度查找一个元素 原理:每次都让当前查找的区间长度减半 取当前区间的中点 像一个性质,然后更新区间 如果l和r重合,则查找完毕 // 第一种模板 while (l < r) { int mid = l + r + 1 >> 1; if (check(mid)) l = mid; els

  • 队员分组 (二分图+dp--差值最小问题)2022-05-02 20:04:53

    有 nn 个人从 11 至 nn 编号,相互之间有一些认识关系,你的任务是把一些人分成两组,使得: 每个人都被分到其中一组。 每个组都至少有一个人。 一组中的每个人都认识其他同组成员。 在满足上述条件的基础上,要求两组成员的人数之差(绝对值)尽可能小。请构造一种可行的方案。 请注意,xx

  • 【二分图】 猫和狗2022-05-02 15:01:06

    唉唉,做这个题主要是注意一下输入,如果想我这样朴素搞C10这种输入的话就得注意许多东西,我就把代码放在这里吧WARNING:本代码调试信息极多,,,可能会引起不适,,不过我变量名向来起的很直观。。 #include<iostream> #include<iomanip> #include<cstdio> #include<cstring> #include<cctype>

  • 平衡二叉树2022-05-01 15:32:29

    平衡二叉树是在二分查找树在基础上进行优化 二分查找树会有时出现左右倾斜度较高的情况如下所示,查找元素6时会查找6次, 这样与直接使用链表无异 因此会使查找效率变低. 通过以某种规则对树进行重新排序使节点直接变平衡, 以此来改善效率低的问题. 平衡因子: 左子树的深度 - 右

  • 线段树二分及区间mex2022-04-28 20:00:23

    仓鼠的鸡蛋 思路: 把线段树权值全部置为m,维护区间最大值,每次优先找满足条件的左边的区间 const int N = 500010; int cnt[N]; int a[N]; int n, m, k; int tr[N << 2]; int M = 1; void pushup(int p) { tr[p] = max(tr[p << 1] , tr[p << 1 | 1]); } void build(int n) {

  • 34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)2022-04-28 01:31:48

    34. 在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 进阶: 你可以设计并实现时间复杂度为 O(log n) 的算法解决此

  • lc704.二分查找2022-04-27 18:32:58

    【递归】 class Solution: def search(self, nums: List[int], target: int) -> int: if len(nums) == 0: return -1 mid = int(len(nums)-1 / 2) result = 0 if nums[mid] > target: result = self.search(

  • CF1672E-notepad.exe【交互,二分】2022-04-26 19:02:52

    正题 题目链接:https://www.luogu.com.cn/problem/CF1672E 题目大意 有一个你不知道的长度为\(n\)的序列\(l\),你每次可以询问一个长度\(w\)。交互库会返回一个\(h\)表示最少能将\(l\)分成多少连续段使得每一段\([l,r]\)都满足\(\sum_{i=l}^rl_i+r-l\leq w\)。 但是,如果\(w<max\{l

  • POJ-3579 Median2022-04-25 18:34:48

    Median 给n组数,将其两两之差列为新的数列,求这个数列的中位数 二分套二分 很容易想到是二分答案,查看有多少个数小于等于这个答案 抽象的地方在于查询有多少个差小于等于当前的差,通过二分\(a[i]+x\)在原数组的位置来判断,有多少个数 \(y \ge a[i] + x\),从而判断以\(pair(a[i], y)\)的

  • 二分查找非递归Algorithm(java)2022-04-24 22:35:41

    二分查找的适用条件 二分查找只适用于有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找 二分查找的运行时间为对数时间O(LONG2 N) 二分查找非递归的实现 /** * @param arr 待查找的数据 升序排列 * @param target 需要查找的数 * @return 返回对应下标,-1表示没有找

  • 2022-4-24 二分查找2022-04-24 11:00:06

    3. 无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 1 class Solution { 2 public int lengthOfLongestSubstring(String s) { 3 int l=0,r=0,ans=0; 4 Set<Character> set=new HashSet<>(); 5

  • LeetCode74 搜索二维矩阵-----二分查找2022-04-24 00:00:55

    题目表述 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 二分查找 从题目可以看出,矩阵的每一行是递增的,每行的第一个元素大于前一行的最后一个元素,所以每列也

  • 2022-4-23二分查找2022-04-23 10:00:06

    1011. 在 D 天内送达包裹的能力 传送带上的包裹必须在 days 天内从一个港口运送到另一个港口。 传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量(weights)的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。 返回能在 days 天内

  • 减治思想——二分查找详细总结2022-04-22 22:32:01

    减治思想——二分查找详细总结 二分查找应用于有序数组,可以在以\(O(\log(n))\)时间复杂度进行查找。其思想在于利用数组的有序性直接排除掉一些元素,这也是进行“减治”的地方。二分查找思想看起来简单,但是其边界条件其实很容易弄混,下面就对各种情况的二分查找(基础情形、左边界二分

  • 2022-4-20 二分查找2022-04-20 15:01:51

    354. 俄罗斯套娃信封问题 给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的宽度和高度。 当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。 请计算 最多能有多少个 信封能组成一组

  • 2022-4-19 二分查找2022-04-19 13:00:31

    704. 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 1 class Solution { 2 public int search(int[] nums, int target) { 3 int l=0,r=nums.le

  • 关于二分搜索 简单、左侧区间、右侧区间2022-04-16 10:00:50

    4月15号阅文一面,问完八股之后被问到了二分搜索,我啪的一下就写出来了,很快啊!面试官也很高兴,想加大一点难度,让我写一下搜索左侧区间的二分搜索。 什么是搜索左侧区间的二分搜索呢?比如一个排序数组里有某个元素重复出现了多次,我们的二分搜索必须每次返回这个元素第一次出现的位置。比

  • 二分求LIS2022-04-11 20:00:42

    题目由leetcode1713延伸,求最长上升子序列,数据量较大时选中二分优化很快 #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; #define inf 0x3f3f3f3f // int dp[200220], list[200220], a[200220]; // dp[i]保存lis为i时最小的

  • 二分查找2022-04-10 13:02:33

    左侧边界 1 int left_bound(int[] nums, int target) { 2 int left = 0, right = nums.length - 1; 3 // 搜索区间为 [left, right] 4 while (left <= right) { 5 int mid = left + (right - left) / 2; 6 if (nums[mid] < target) { 7

  • 算法基础⑤2022-04-06 20:03:06

    二分和前缀和 二分 二分简介 二分分为整数二分和实数二分两种, #### 整数二分步骤: 1. 找一个区间[L, R],使得答案一定在该区间中 2. 找一个判断条件,使得该判断条件具有二段性,并且答案一定是该二段性的分界点。 3. 分析中点M在该判断条件下是否成立,如果 (成立,考虑答案在那个区间。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有