二分问题
二分问题
化身孤岛的鲸o
我祈祷拥有一颗透明的心灵
展开
-
LeetCode 792. 匹配子序列的单词数 二分查找
LeetCode 792. 匹配子序列的单词数 二分查找原创 2022-11-18 23:00:14 · 117 阅读 · 0 评论 -
洛谷 P1316 丢瓶盖——二分查找
Solution: 这是一道标准的考二分查找的题目。重点还是二分的范围,我们先将所有点的位置按从小到大排序。最大的距离应该是0~a[n]-a[1]之间。 #include<iostream> #include<algorithm> #define MAX 100005 using namespace std; int n,m; int a[MAX]; bool judg...原创 2019-04-14 22:36:18 · 497 阅读 · 0 评论 -
PAT甲级 1085 Perfect Sequence 暴力枚举或者二分
Solution: 给出不变的值p,一个序列是完美序列的条件是:序列中最大的数M,最小的数m,有M <= m x p。 给出一个初始序列,从中挑出尽可能多的元素是这些元素构成完美序列。 并输出最大个数。 先进行排序,再暴力枚举。 代码如下: //暴力枚举 #include<iostream> #include<algorithm> #include<math....原创 2019-09-01 18:04:58 · 186 阅读 · 0 评论 -
洛谷 P1182 数列分段 二分查找
Solution: 这道题让我们将数列分组,分成m组,并且求出每组的和,使每组和中的最大值最小,遇到这种我们,就要想到用二分的思想。关键就是我们怎样确定二分的范围,我们最多把数列分为n组,每组只有一个元素,找出所有元素的最大值max;最少把数列分为1组,也就是不分组,这组的和就是n个元素的和sum。而我们要求的就在max~sum之间。 代码如下: #include<iostream>...原创 2019-04-14 21:48:41 · 224 阅读 · 0 评论 -
洛谷 P1462 通往奥格瑞玛的道路 二分+Dijkstra优先队列优化
洛谷 P1462 通往奥格瑞玛的道路 二分+Dijkstra优先队列优化 代码如下: #include<iostream> #include<algorithm> #include<stdio.h> #include<cmath> #include<queue> #include<string> #include<vec...原创 2020-01-10 22:59:18 · 590 阅读 · 0 评论 -
PAT 甲级 1010 Radix 二分法+数制转化
Solution: 这道题的意思是:给出两个不超过10位的正数n1、n2,它们的进制可能不一样。题目会给出第一个数或者第二个数的进制,让我们求出另一个数的进制使这两个数相等并输出。如果不存在一个进制使它们相等,则出“Impossible”。基本思想还是二分:我们选择在十进制下比较两个数的大小,先把给出进制的数转化为10进制数,则右边界right就等于这个十进制数,因为如果另一个数的进制比rig...原创 2019-05-17 09:34:43 · 291 阅读 · 0 评论 -
PAT甲级 1044 Shopping in Mars 前缀和+二分
Solution: 这道题给出一个序列,然后给出一个值m,求区间和等于这个值的区间起始位置。若所有区间和都不等于这个值,就找到区间和大于m且最接近m的区间。 若直接暴力遍历,是会超时的。 暴力搜索代码: #include<iostream> #include<algorithm> #include<math.h> #include<stdio.h>...原创 2019-07-25 21:18:27 · 328 阅读 · 0 评论 -
PAT甲级 1048 Find Coins 二分查找
Solution: 题目要求:第一行给出两个正整数,第一个n表示有钱币的总数量,第二个m为Eva要支付的金额,钱币的面额不会超过500。Eva必须用两个钱币且这两个钱币的和恰好等于m才可以购买物品。如果没有找到解决方案,则输出“No Solution”,否则若输出两个钱币的面额v1、v2,其中v1<=v2。若方案不唯一,则输出v1较小的方案。 二分查找即可。 代码如下: //...原创 2019-08-31 19:43:38 · 249 阅读 · 0 评论 -
PAT甲级 1050 String Subtraction 二分查找
Solution: 题目要求:给出两个字符串s1,s2,字符串的长度都不超过10的4次方。 要求在s1去掉s2中出现过的字符。 将s2中的字符保存到一个字符数组ch[]中,再从小到大进行排序,再一次扫描s1中的字符,在ch[]数组中查找,若查找到,则flag[i]=false,然后遍历s1,输出flag[i]=true的字符。 代码如下: #include<string> #in...原创 2019-08-31 20:30:48 · 183 阅读 · 0 评论