二分
文章平均质量分 52
SeasonJoe
这个作者很懒,什么都没留下…
展开
-
POJ3104 二分
题意: 有n件湿衣服,含水量分别为a[0~n-1],烘干机每分钟可以除去k份水,每过一分钟每件衣服自动蒸发1份水,注意在烘干的时候不会自动蒸发水要点: 1.注意会超int,所以用long long 2.一个小技巧,整数运算中,a/b的上取整可以用(a+b-1)/b。 3.用二分枚举mid,如果一件衣服水量大于mid时,最短的时间是自动蒸发mid分钟,在烘干一段时间,为了将正在烘干的衣服也进入原创 2015-12-09 15:47:37 · 248 阅读 · 0 评论 -
PAT1044. Shopping in Mars (25)(二分)
题意:给出一系列数字,要求输出子序列使其和等于m,如果没有等于m的子序列就输出和减去m的差最小的子序列要点:这题的时间要求是100ms,n的量级是10^5,O(n^2)是肯定不行了,但我一开始算了一下O(nlogn)觉得不大行,就一直在想O(n)的方法,实际上O(nlogn)=10^5*17=1.7*10^6差不多是行的。接下来二分就行了。#include<iostream>#inc...原创 2018-04-28 16:02:19 · 155 阅读 · 0 评论 -
PAT1010 Radix (25)(模拟)
这题的题意极难懂,给两个数a,b和a的进制x,问b在哪个进制下和x进制的a相等,一开始我以为就是简单的最高进制单字符为z=36就行了,后来发现不对,这题的基数可以非常大,比如999999 1 1 10这种情况,b的基数就可以取999999,可以看出基数最大的可能也就是a的十进制表示,还要注意用long long,而且求a的十进制表示时还有可能溢出,所以最后二分的时候还要讨论一下,总之坑太多了。还有...原创 2018-03-25 22:51:52 · 256 阅读 · 0 评论 -
HDU1166 敌兵布阵(线段树)
题意:中文题要点:就是一个单点更新的线段树问题,之前一直用线状数组,现在学了一下线段树,这两个能处理的问题都差不多,线段树好理解一些,基本就是存储将一个区间不断二分,形成一个树,方便查询和更新。#include#include#includeusing namespace std;const int N = 50000 + 5;int sum[N << 2];int原创 2016-10-15 16:12:10 · 296 阅读 · 0 评论 -
codeforces732D Exams(二分)
题意:给出一串数字,代表了第i天能够进行哪场考试,如果为0就不能考试,每天只能考一场。一共要考m场试,每门科目要a[i]的复习时间,所以问最快第几天能够考完所有科目。要点:一开始我觉得BFS可以做,后来发现状态量没法表示,网上看了一下,原来可以用二分做,因为当第i天时考科目d[i]时,你最多可以有i-1天复习,然后如果这天考试了,再往前进行状态转移。#include#includ原创 2016-10-24 21:31:44 · 396 阅读 · 0 评论 -
POJ1064 Cable master(二分)
题意:给出n根电缆,长度在1cm~100km之间,要求截断成k根长度为m的电缆,求m的最大值,注意小于1cm的就不能截断了。要点:明显的二分题,但是要注意精度,如果按m做要考虑精度损失,所以干脆全转换为cm,这样就是整数二分。还要注意这题没有说电缆要全部用完,所以二分求最大值的过程中如果num>k时这个区间也是合法的,求最大值也应该在其中求。参考博客:点击打开链接原创 2016-04-21 09:09:42 · 465 阅读 · 0 评论 -
POJ2002&&POJ3432 Squares(二分||hash)
题意:给出一系列坐标,求最多可以组成多少个正方形要点:可以用二分或者哈希,哈希我不会,以后学一下。二分比较简单,以两个点作为参考边,可以通过全等三角形得出剩下两个点的坐标。然后二分查找是否存在即可。已知: (x1,y1) (x2,y2)则: x3=x1+(y1-y2) y3= y1-(x1-x2)x4=x2+(y1-y2) y4= y2-(x1-x2)或x3=x1-原创 2016-04-22 14:20:16 · 417 阅读 · 0 评论 -
POJ1905 Expanding Rods(二分)
题意:给一个长度为L的钢条,加热后长度改变并且弯曲成一个弧,算出之间的距离要点:基础思想是二分,但其实里面包含了很多证明参考博客:点击打开链接15301383Seasonal1905Accepted196K0MSC++510B2016-03-22 20:56:20#include#include#inc原创 2016-03-22 21:12:00 · 381 阅读 · 0 评论 -
POJ2503 二分&&结构体字典序排序&&sscanf函数
题意:就是模拟一个查字典的过程,先输入互相对应的英语和外国语作为参照,再输入一些外国语,要求输出对应的英语要点:1.结构体的字符串排序struct Node{ int data; char str[100];}s[100];//按照结构体中字符串str的字典序排序int Comp(const void*p1, const void*p2){ return strcm原创 2016-01-21 11:23:02 · 746 阅读 · 0 评论 -
POJ3122 二分与误差
题意:n个派f+1个人分(包括自己),同一个派可以分成多块,但每个人只能拿一块,并且不能拼接比如一块6派,如果拿5,剩下的1就得丢弃要点:1.比较普通的二分,将每块派大小除mid,累加得到分给的人数。要注意mid也就是每个人分到的派可以是浮点数。2.要求精度问题,因为left和right都是double型,mid=(left+right)/2,所以这两个只能无限接近。因为最后答案都原创 2016-01-19 21:42:28 · 374 阅读 · 0 评论 -
POJ3258 二分与最小值最大化
题目的意思就是一排石子,拿走几个,使这些石子相邻间距中的最小值最大。不会做,只能看网上的代码,发现解释也很少,最后还是自己一点点搞懂的,但没完全搞懂,有的地方还是略不理解这题看了网上的代码都是用二分法,那么思路是这样的,先排序,然后再从大到小假设要求的区间mid,这个区间就是一直二分得到,那么用这个区间和相邻石子的区间比较,如果小于这个区间,就把后一个石子拿走(因为前一个如果是第一个拿不走啊),并且原创 2015-12-08 18:00:07 · 633 阅读 · 0 评论 -
POJ3273 二分与最大值最小化
题意:给出农夫在n天中每天的花费,要求把这n天分作m组,每组的天数必然是连续的,要求分得各组的花费之和应该尽可能地小,最后输出各组花费之和中的最大值要点: 与二分求最小值最大化一样,还是先猜测一个数mid进行比较,然后二分减小区间,过oj的时候RE了好几次,后来才发现是数组区间开小一位了,注意RE也有可能是这种情况#include<stdio.h>#include<string.h>#defi原创 2015-12-08 21:30:11 · 392 阅读 · 0 评论 -
POJ2456 二分
题意: 有一排n间固定位置的牛房,放入c头牛,使每头牛之间的间隔最小值最大要点: 猜测输出的间隔为mid,先排序,再从第一间开始放入牛(第一间肯定要放,这样最高效)进行a[last]+mid<=a[i]的判断,比较特别的是每次判断成立后要改变last的值,也就是从第一间开始如果满足条件马上作为第二间,再从第二间开始判断,说不太清楚,看代码吧感悟: 二分做的差不多了,接下来再做也就是题目角度的不原创 2015-12-11 12:28:48 · 516 阅读 · 0 评论 -
POJ3579 二分
这题也是二分,但有很多特殊的地方: 题意是输入一串数,这些数之间的差排成一列,找出其中的中位数第一次二分枚举猜测中位数为mid,比较a[i]+mid与后面的数,与m比较确定区间,第二次二分是在比较的过程中,如果用两个迭代还是N^2,所以用二分求上界,总数减去返回的下标值就是后面大于或等于a[i]+mid的数量。这题有个奇怪的地方,说是第m/2个最小值为中位数但如1,2,10的差是1,8,9,中位数原创 2015-12-10 21:28:52 · 411 阅读 · 0 评论 -
二分查找求上下界的两种不同算法
在学习LIS的O(nlogn)的算法时看到了二分法求下界的概念,所以回白书学习了一下在有序表中查找元素时经常用到二分法,普通的二分查找很简单,就是不断改变区间。二分查找只适用于有序数列,时间复杂度为O(nlogn)二分查找(迭代实现):int bsearch(int *A, int x, int y, int v){ int m; while (x < y) {原创 2015-11-22 10:40:57 · 2836 阅读 · 0 评论 -
PAT1085 Perfect Sequence(二分)
题意:从n个数中选择若干个数,要求这些数中的最大值不超过最小值的p倍。要求选出的数的最大个数。思路:这题就是一个二分查找问题,先排序,然后二分查找第一个大于最小值p倍的数的位置。注意a[i]*p可能达到10^18,所有要用long long型。#include<bits/stdc++.h>using namespace std;const int maxn=1e5...原创 2018-09-05 15:33:03 · 211 阅读 · 0 评论