随笔分类 - 二分
摘要:解决思路 二分查找:使用二分查找来确定舞台的最小大小 K。 检查函数:定义一个检查函数 check(mid),判断在舞台大小为 mid 时,演出是否能在 T_max 时间内完成。 优先队列:使用优先队列模拟舞台上的奶牛,确保每次有奶牛完成表演时,下一头奶牛立即上台。 更新边界:根据检查函数的结果,更
阅读全文
摘要:解决思路 二分查找:使用二分查找来确定每个成员分到的猫猫数量的最大值。 检查函数:定义一个检查函数 check(mid),判断在每个成员最多分到 mid 只猫猫的情况下,是否可以将所有猫猫分完 更新边界:根据检查函数的结果,更新二分查找的边界,直到找到最小的不满度。 #include <bits/s
阅读全文
摘要:解决思路 二分查找:使用二分查找来确定伐木机锯片的最大高度 H。 检查函数:定义一个检查函数 check(mid),判断在高度 mid 时,能否得到至少 M 米的木材。 更新边界:根据检查函数的结果,更新二分查找的边界,直到找到最大的 H。 #include <bits/stdc++.h> #def
阅读全文
摘要:解决思路 读取输入:读取数组和查询数。 二分查找:对每个查询数进行二分查找,找到其在数组中第一次出现的位置。 输出结果:输出每个查询数在数组中第一次出现的位置。 #include <bits/stdc++.h> #define ll long long using namespace std; co
阅读全文
摘要:#include<bits/stdc++.h> #define f(i,s,e) for(int i = s; i <= e; i++) #define ll long long using namespace std; const int N = 2e6+10,inf = 0x3f3f3f3f;
阅读全文
摘要:描述 有n个数字,a1,a2,...,an。 给出左右两个端点l和r,你的任务找到有多少个数字在l和r之间(包括端点)。 输入 输入的第一行有一个n(1≤n≤105)。 第二行包含n个数字,a1,a2,...,an(1≤a≤109); 第三行有一个k(1≤k≤105)。 接下来k行,每行有两个数字l
阅读全文
摘要:描述 给出若干个整数,询问其中是否有一对数的和等于给定的数。 输入 第一行是整数n(0 < n ≤ 100,000),表示有n个整数。 第二行是n个整数。整数的范围是在0到108之间。 第三行是一个整数m(0≤m≤230),表示需要得到的和。 输出 若存在和为m的数对,输出两个整数,小的在前,大的在
阅读全文
摘要:描述 给一个长度为n的单调递增的正整数序列,即序列中每一个数都比前一个数大。有m个询问,每次询问一个x,问序列中最后一个小于等于x的数是什么? 输入 第一行为两个正整数n和m(1<=n,m<=100000) 第二行为n个正整数,接下来有m行,每行一个x。 序列中的元素及x都不超过10^6 输出 输出
阅读全文
摘要:描述 仙境的居民们决定举办一场程序设计区域赛。裁判委员会完全由自愿组成,他们承诺要组织一次史上最公正的比赛。他们决定将选手的电脑用星形拓扑结构连接在一起,即将它们全部连到一个单一的中心服务器。为了组织这个完全公正的比赛,裁判委员会主席提出要将所有选手的电脑等距离地围绕在服务器周围放置。 为购买网线,
阅读全文
摘要:描述 每年奶牛们都要举办各种特殊版本的跳房子比赛,包括在河里从一个岩石跳到另一个岩石。这项激动人心的活动在一条长长的笔直河道中进行,在起点和离起点L远 (1 ≤ L≤ 1,000,000,000) 的终点处均有一个岩石。在起点和终点之间,有N (0 ≤ N ≤ 50,000) 个岩石,每个岩石与起点
阅读全文
摘要:二分查找是一种在有序数组中查找特定元素的算法。它的基本思想是将数组分成两部分,判断目标元素在哪一部分中,然后继续在该部分中进行查找,直到找到目标元素或者确定目标元素不存在为止。这种算法的时间复杂度为O(log n),比线性查找的时间复杂度O(n)更快。 例如,寻找n个从小到大顺序的中指定的数字位置,
阅读全文