有一个正整数序列,求最短的子序列使得其和大于等于S,并输出最短的长度。用数组b[i]存放序列的前i项和,所以b[i]是递增的。遍历终点j,然后在区间[0, j)里二分查找满足b[j]-b[i]≥S的最大的i,时间复杂度为O(nlongn)。这里二分查找用到库函数lower_bound() 1 //#...
分类:
其他好文 时间:
2014-08-02 23:20:54
阅读次数:
269
Search for a Range1.最简单的想法,用最普通的二分查找,找到target,然后向左右扩张,大量的重复的target,就会出现O(n)效率。 class Solution { public int[] searchRange(int[] A, int target) { ...
分类:
其他好文 时间:
2014-08-02 15:12:14
阅读次数:
270
解题报告
题目传送门
题意:
B个猪圈,N头猪,每头猪对每个猪圈有一个满意值,要求安排这些猪使得最大满意和最小满意的猪差值最小
思路:
二分图的多重匹配问题;
猪圈和源点连边,容量为猪圈容量,猪与汇点连边,容量1;
猪圈和猪之间连线取决所取的满意值范围;
二分查找满意值最小差值的范围。
#include
#include
#include
#include
#define...
分类:
其他好文 时间:
2014-08-01 19:45:22
阅读次数:
317
二分查找有很多种写法…对不同的功能也有不同的写法,比如找最左边的相等的数、小于它的最大的数、大于它的最小的数等等……我写的时候总是特别蛋疼。于是来收集一下,以后要用二分查找的时候,新的写法我就拿来放在这里。在升序中找比a[i]大的第一个(比a[i]大的最小的一个)(数据要保证必有比a[i]大的,不然...
分类:
其他好文 时间:
2014-08-01 19:11:22
阅读次数:
185
问题重述:给定整数n,以及n个点的坐标xi, yi。求这n个点可以组成的正方形的数目(每个点可重复使用)。分析:根据正方形的性质,给定两个点就能确定可能构成的两个正方形的另外两个顶点。因此,只需要遍历所有点中的两个顶点,计算出可构成正方形的另外两个顶点的坐标,再在已知点中查找这两个点是否存在即可算出...
分类:
其他好文 时间:
2014-08-01 18:54:22
阅读次数:
198
链接:poj 2318
题意:有一个矩形盒子,盒子里有一些木块线段,并且这些线段坐标是按照顺序给出的,
有n条线段,把盒子分层了n+1个区域,然后有m个玩具,这m个玩具的坐标是已知的,问最后每个区域有多少个玩具
分析:从左往右,直到判断玩具是否在线段的逆时针方向为止,这个就需要用到叉积,当然可以用二分查找优化。
叉积:已知向量a(x1,y1),向量b(x2,y2),axb=x1*y2-...
分类:
其他好文 时间:
2014-08-01 10:58:32
阅读次数:
167
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。
假设其数组长度为n,其算法复杂度为o(log(n))
代码:
#include
using namespace std;
bool BinarySearch(int data[],int start, int end, int number){
while(start...
分类:
其他好文 时间:
2014-08-01 09:14:51
阅读次数:
228
1定义接口:
Num.h
#ifndef
_NUM_H_
#define
_NUM_H_
#include
#include
/************************************************************************/
/*
数组的结构体类型...
分类:
其他好文 时间:
2014-08-01 02:26:31
阅读次数:
243
题意:k份书稿分成m份,使得每份的和最小
思路:典型最大值最小化问题,使用贪心+二分。贪心的是每次尽量将元素往右边划分,二分查找最小的x满足m个连续的子序列和S(i)都不超过x。
因为输出的原因,在划分时就从后往前尽量划分。
#include
#include
#include
#include
using namespace std;
typedef long ...
分类:
其他好文 时间:
2014-07-31 13:29:27
阅读次数:
178
两个都是最长上升子序列,所以就放一起了1631 因为长度为40000,所以要用O(nlogn)的算法,其实就是另用一个数组c来存储当前最长子序列每一位的最小值,然后二分查找当前值在其中的位置;如果当前点不能作为当前最长子序列的最大值,则更新找到值为两者间的较小值。2533 就是一个裸的最长上升子序列...
分类:
其他好文 时间:
2014-07-30 20:13:04
阅读次数:
230