![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分
Jason_Wcz
这个作者很懒,什么都没留下…
展开
-
CodeForces - 363D Renting Bikes (二分+贪心)
题目链接 思路:我们可以知道,一定会有一个答案在所给的车数量中(包括0),因此我们只需要找到答案,并验证它。所以想到二分来查找答案,并验证是否可行。不过要注意的就是为了保证尽量多租,我们就优先用个人金额多的去租贵的车,以及验证的时候,要选便宜的。因此也要先排序两个数组b,p 代码: import java.io.IOException; import java.util.Arrays; im原创 2018-01-28 18:26:22 · 221 阅读 · 0 评论 -
UVALive 7500 Boxes and Balls (二分)
题目链接 题意:一开始有一个盒子,盒子里有n个球,然后进行如题中的操作,最后使得盒子的状态能保持在一个稳定的状态。 思路:稳定的状态下,盒子中球的数量一定是维持1,2,3,4......k-1,k 因此在一开始盒子中球的数量一定要可以是一个从1到k等差序列的和,否则,不能维持稳定。 以此得知我们要做的是,从1到n中找出一个数k,到k为止的等差数列和不超过n且是最大的那个数列和就行,这原创 2018-01-28 18:45:57 · 118 阅读 · 0 评论 -
PAT (Advanced) 1010 (二分查找+任意进制转十进制)
本来以为是个水题,又涉及进制转换,所以想偷懒用java搞,结果GG了。 想了半天觉得进制限制应该不是36,才开始改。 思路就是找到查找目标的进制上下界,下界是这个字符串中最大的字符+1,上界有两种情况:一种是如果已经确定的那一房,十进制大于下界,那么上界就是那个十进制数+1;否则就是下界到36。 还有个坑就是可能存在不止一个答案,二分查找最小的答案。 import java.math.Bi...原创 2018-08-03 13:28:19 · 199 阅读 · 0 评论 -
PAT (Advanced Level) 1044 Shopping in Mars (二分+前缀和)
一开始对每个i位置查最接近m的区间时,从0扫到刚好大于等于m的位置,这样有个case超时了。然后想了下,前缀和是有序的,而我们必然可以从0~i这区间找到一个位置j使得pre[i] - pre[j] >= m,因此想到二分。 #include<iostream> #include<cstdio> #include<vector> #include<...原创 2018-08-27 11:55:55 · 151 阅读 · 0 评论 -
PAT (Advanced Level) 1057 Stack (树状数组+二分)
第一遍理解错了题意,以为是找栈中间位置那个元素。。。然后兴高采烈手写了个栈以及各种操作权当复习数据结构,结果样例都过不了。。。仔细查了查数据才意识到是找中位数=_= 这题找中位数,范围1e5,树状数组就可以,然后由于数据可能比较稀疏,全扫一遍肯定TLE,因此加个二分。 顺便这题发现个问题,不知道是不是PAT字符串数组不能用char * s;来初始化,一旦用就是段错误,C++的字符和字符串的原...原创 2018-09-01 14:11:00 · 169 阅读 · 0 评论 -
PAT (Advanced Level) 1078 Hashing (哈希、平方探测冲突处理Quadratic probing)
记录下这题是因为注意平方探测的公式是:,其中i = 0,1,2...TableSize 而非先对key取模再加平方。 这题质数范围不大,不用二分直接扫也不会T。 #include<bits/stdc++.h> using namespace std; int m,n; int cnt; int prime[1300]; void init(){ cnt = 0; fo...原创 2018-11-11 18:01:33 · 198 阅读 · 0 评论