二分
Nemaleswang
ACM退役狗一只
展开
-
Leetcode 540. Single Element in a Sorted Array
题目链接:Single Element in a Sorted Array题目大意:给你一个有序数组,里面只有一个数只出现一次,其他数只出现两次,要求你找到这个数,要求复杂度为O(logn)题目思路:数组有序,且要求复杂度是Log,所以可以很容易的想到使用二分,每次二分的判断条件可以使用这样一个问题,如果当前数与前后都不相同,那么这个数就是我们要找的数,如果他与后面一个树相同,那么我们可以通过它后面数的个数来判断,如果后面的长度为偶数,那么后面必然没有单独的一个数,不然这个长度一定为奇(其他数都是两个,原创 2020-05-12 18:40:42 · 228 阅读 · 0 评论 -
Leetcode Leftmost Column with at Least a One
题目链接:Leftmost Column with at Least a One题目大意:给你一个n*m的01矩阵,这个矩阵的每一行都是一个非递减序列,要求你找到最前面的一列,这一列需要包括至少一个1题目思路:首先根据非递减的思想,我们可以很容易的想到,对于每一行最开始的1,我们可以用二分找到,如果每一行都找到了对应的初始1的列,那么所有列最初始1的位置就可以找到了,代码见解法一(对于找到最左...原创 2020-04-21 18:15:35 · 347 阅读 · 0 评论 -
Leetcode 33. Search in Rotated Sorted Array
题目链接:Search in Rotated Sorted Array题目大意:给定一个有序数组,经过旋转得到新得数组,也即改变起点位置,如[0,1,2,4,5,6,7] 变成[4,5,6,7,0,1,2]。要求仍然在log的时间进行查找某个特定的target题目思路:我们可以知道其实这个数组可以分成两半部分的有序数组,所以我的步骤是这样的,将这个数组直接砍成两个数组来进行二分,不需要判断太多...原创 2020-04-19 17:49:13 · 245 阅读 · 0 评论 -
Leetcode 215. Kth Largest Element in an Array
题目链接:215. Kth Largest Element in an Array题目大意:给定无序数组求第k大,经典面试题题目思路:利用快速排序,每次定一个轴,比轴大的放左边,小的放右边,如果左边的数量小于k,则第k大在右边,反之在左边,每次去找就好了时间复杂度&&空间复杂度:O(n)(需要找的总共次数为n/2+n/4+…+1 = 2n-1次)&&O(1)...原创 2019-10-31 22:31:41 · 128 阅读 · 0 评论 -
2016-2017 ACM-ICPC CHINA-Final
题目链接:A题题目大意:问有多少个小于2n2^n的形式是2k−12^{k}-1的能整除7的数字的个数题目思路:7的二进制是111,而2k−12^{k}-1的二进制是k个1,所以只需要k能被3整除就好了#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <vector>#i原创 2017-11-22 17:33:46 · 1261 阅读 · 1 评论 -
hdoj 6231 K-th Number
题目链接:K-th Number题目大意:给你一个长度为n的数字,然后需要你找出这个序列里面长度大于等于k的所有子序列里第k小的数,然后扔到另一个数组里面去,然后寻找另一个数组里面第m大的数,问这个数题目思路:我们可以将问题转化一下:我们需要去二分一个最大的x,且这个x满足有大于等于m个区间的第k小大于等于x(这样的话就满足了这个枚举的数要比我们最后要得到的数要大)。所以关键在于,如何求有多少个区间原创 2017-12-01 15:32:15 · 337 阅读 · 0 评论 -
hdoj 2236 无题II
题目链接:无题II题目大意:有一个n*n的矩阵,问能不能选n个数,这n个数行和列都不同,而且最大值和最小值之间的差尽可能需要小,问这个最小差值题目思路:我们去二分这个这个差值,然后枚举下界,判断符合条件的数,然后行和列连接一条边,然后跑一个二分图最大匹配看是不是n就好了#include <map>#include <set>#include <stack>#include <queue>#i原创 2017-10-27 17:43:59 · 540 阅读 · 2 评论 -
hdoj 5976 Detachment
题目链接:Detachment题目大意:给你一个n,拆分成不等的一些数,要求乘积最大,算最大乘积题目思路:我们可以先手动拆一下,发现,不管我们怎么拆,我们是在2,3,4,5…这样的顺序上去拆,然后在上面的数进行操作,比如我们假设这个数拆成了2,3,4,然后剩下3个数,那么我们想的是把3全部加到2上面,这样一定最优,但是要求不能重复,如果剩下的数加到2上会有重复,所以我们要不能重复且要贡献最大,不能加原创 2017-09-15 21:25:19 · 276 阅读 · 0 评论 -
Codeforces Round #426 (Div. 2) C. The Meaningless Game
题目链接:The Meaningless Game题目大意:有两个数,初始值都是1,现在他们可以互相博弈很多轮,赢的人可以在原本值得基础上乘上一个k*k,输方可以乘上一个k,k的值每一轮都可以不同,然后给你一个n和m,代表很多轮之后他们的得分,问这个得分是否合法题目思路:很容易可以想到每一轮得分乘积的贡献都是一个k* k k,那么很多轮后就是,k1 k1 * k1 * k2 * k2 k2 … *原创 2017-07-31 17:36:43 · 247 阅读 · 0 评论 -
Codeforces Round #424 (Div. 2) D. Office Keys
题目链接:Office Keys题目大意:有一条直线上有一些客户和钥匙,然后有一个终点,然后每个客户至少捡到一把钥匙再到终点,一把钥匙只能一个人用,现在所有的客户都拿到了一把钥匙并且到了终点,这些所有客户里面时间有一个最大值,现在要求你使得这个最大值最小,问这个最小值是多少题目思路:我们可以知道最后的钥匙和客户位置一定是同样递增的,那么这时候我们只需要取尽量左边的位置就好了,这时候我们就可以二分这个原创 2017-07-16 18:31:46 · 355 阅读 · 0 评论 -
Codeforces Round #424 (Div. 2) C. Jury Marks
题目链接:Jury Marks题目大意:有n个评委的打分,可正可负,但是我们不知道初始值是多少,然后给出你k个分数,这k个分数是在某个评委打完分之后当前这位选手的得分,要求这k个分数都是正确的,然后需要你判断有多少个初始分可以满足这个条件,全部无序题目思路:因为所有的k个分数必须得都合理,所以第一个分数必须得合理,那么我们就枚举第一个分数为某个评委打分后的分数,那么我们可以通过评委分的前缀和得到初始原创 2017-07-16 18:18:17 · 396 阅读 · 0 评论 -
「美团 CodeM 初赛 Round A」倒水
题目链接:倒水题目大意:给你一个一个大水杯,里面有温度为T,体积为C的水,然后有n个水杯,每个水杯的温度是t[i],体积是c[i],然后问你能不能通过把水杯的水倒进小水杯里,使得所有小水杯温度相同且最高,两个体积为c1,c2,温度为t1,t2的水混合后的温度为c1∗t1+c2∗t2c1+c2\dfrac{c1*t1+c2*t2}{c1+c2}题目思路:我们可以先找出所有小水杯的温度最大值maxx和最原创 2017-07-04 17:31:05 · 584 阅读 · 0 评论 -
hdoj 5878 I Count Two Three
题目链接:I Count Two Three题目大意:给你一个n,要求你找出大于等于n的第一个满足可以分解为2^a*3^b*5^c*d^7这种形式的数题目思路:大家都是四层循环打表的吗?我们队伍的做法是丑数的做法,也是打表,不过好像时间复杂度低一点,而且可以解决不止2,3,5,7四个数的情况,打完表直接二分去找就好了,具体看代码吧#includeusing namesp原创 2017-05-06 21:20:39 · 362 阅读 · 0 评论 -
洛谷 1678 烦恼的高考志愿
题目链接:烦恼的高考志愿原创 2017-05-05 22:11:23 · 595 阅读 · 0 评论