![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分法
404-unkown
这个作者很懒,什么都没留下…
展开
-
POJ3258-- River Hopscotch
题目大意:Farmer John来观看一群牛在河里玩跳格子游戏,他想增加观赏性,所以,准备给这个游戏增加难度,河里原先有N个石头作为落脚点,现在,他要拿走M个石头,来增加这些牛每次跳的最短距离。从河岸的起点0开始,跳往河里石头,结束于另一岸的终点L。开始问怎么样拿,使得最短距离最大? 分析:最大化最小值,自然用二分法。 相邻两个落脚点间距离要不小于d,也就是说任意两个落脚点间距离要不小于原创 2015-08-22 20:04:16 · 350 阅读 · 0 评论 -
POJ3685--Matrix
题目大意:给出一个N*N的矩阵,第i行第j列的值为i*i + 100000*i + j*j - 100000*j + i*j,求矩阵中第M小的数 分析:由i*i + 100000*i + j*j - 100000*j + i*j这个公式,可知i是单调递增的。所以,我们可以第一次二分答案mid,第二次根据i的单调性依次二分每一列,得到比mid小的数的个数,如果总个数小于M的话,则说明mid原创 2015-08-22 23:31:24 · 509 阅读 · 0 评论 -
POJ3662--Telephone Lines
#include #include #include #include using namespace std; #define eps 1e-7 const int maxn = 111111; int n, k; double x; struct J{ int a, b; int id; bool operator <(const J & cmp) con原创 2015-08-22 23:56:52 · 590 阅读 · 0 评论 -
POJ3111--K Best
题目大意:Demy要卖掉珠宝,每样珠宝有两个属性,价值v和重量w。自己留k件,使得k件的价值和除以k件的重量和最大,也就是单位重量的价值最大 分析:和POJ2976一个道理,传送门http://blog.csdn.net/hhhhhhj123/article/details/47865473。另外,这题精度有点高。 代码: #include #include #inclu原创 2015-08-22 22:58:55 · 353 阅读 · 0 评论 -
POJ2976--Dropping tests
题目大意:一共有N场考试,每场对a题,每场一共有b题,我们可以去掉k场的成绩,使得最后的正确率最大 分析:肯定是想着贪心去掉每场正确率最小的k场,但是b有可能是0,所以排除了这种策略。换一种思路,既然无法用除法,我们就用乘法,当全局的正确率为x时,每场的a-x*b,表示就是每场额外对的题目,可正可负,很明显去掉那些拖后腿的场次,正确率就能增大。所以,可以在我们假设的正确率为x的情况下,对原创 2015-08-22 22:33:24 · 578 阅读 · 0 评论 -
POJ1759--Garland
题目大意:给出n个灯,以及第1个灯的高度。第i个灯的离地高度,为h[i] = (h[i-1]+h[i+1])/2 - 1。求最后一个灯的高度最小值。 分析:由于已知第1个灯的高度,所以,只需要知道第2个灯高度,便能推出其他的灯。因此,二分第2个灯的高度。 代码: #include #include #include #include using namespace s原创 2015-08-23 10:28:52 · 345 阅读 · 0 评论 -
POJ3579--Median
题目大意:给出一个数列,然后计算数列里各个数之间的差值的绝对值,形成一个新数列,求新数列的中位数 分析:对原始数列进行排序后,首先在这里进行第一次二分搜索,查找中位数mid,然后判断mid是否大了。判断依据如下,计算原数列在i之后,有多少个大于x[i]+mid的数的个数(原始数列里的值比x[i]+mid大,说明该值与x[i]作差形成的新数列里的数比中位数,即mid大),这里求个数就要第二原创 2015-08-22 23:15:16 · 892 阅读 · 0 评论 -
POJ3273--Monthly Expense
题目大意:Farmer John有一份每天支出的账单,他现在想把这些天分成若干的部分,每个部分称之为一个FJ月,问怎么分解,使得FJ月的最大值最小 分析:最小化最大值。直接二分 C(tot)函数用来判断是否可以刚好每个FJ月的总支出不超过tot #include #include #include using namespace std; const int maxn原创 2015-08-22 19:55:47 · 241 阅读 · 0 评论 -
POJ3104--Drying
题目大意:Jane洗完了一些衣服,每件衣服有一定的数量,现在她有一台烘干机,烘干机每分钟可以烘干k数量的水,而风干每分钟只能蒸发1数量的水。求如何使用烘干机,使得这些衣服全部变干的时间最短。 分析:二分答案。当mid>x[i]时,说明多余的水量需要用烘干机来烘干,而每分钟烘干多余的水量其实为k-1,k-1是因为,我们是假设在mid的时间里所有衣服相当于一直被风干,然后,在这mid的可以采用原创 2015-08-22 19:41:15 · 916 阅读 · 0 评论 -
POJ2010--Moo University-Financial Aid(二分)
题目大意:在C头牛里选N头牛,在不超过经费F的情况下,使得N头牛的得分中位数最大。 分析:首先,既然有两个属性,我们可以分别开两个数组,一个数组按成绩升序,一个数组按经费升序。二分中位数那头牛mid,然后按经费从少到多,添加mid两边的牛。再进行判断,四种情况,见代码。 代码: #include #include #include using namespace s原创 2015-08-22 23:47:24 · 889 阅读 · 0 评论 -
hiho1234--Fractal(高精度)
题目大意:给一个正方形,然后取各边的中点,连接成一个新的正方形,每次在新的正方形中重复此过程,共1000次。最后给出一条平行与y轴的线,问经过多少条边。 分析:规律蛮好找的,思路蛮好想的。然而,精度的问题,还是用Java好了。这是第一次用Java写,所以,参考了下别人的代码,传送门:http://www.cnblogs.com/qscqesze/p/4824212.html 这个是UE原创 2015-09-29 15:58:16 · 376 阅读 · 0 评论