模板 #3: int binarySearch(vector<int>& nums, int target){ if (nums.size() == 0) return -1; int left = 0, right = nums.size() - 1; while (left + 1 < right){ // Prevent (left + right) overflow int mid = left + (right - left) / 2; if (nums[mid] ==…
#include <iostream> #include <cstring> #define N 50010 using namespace std; int n; int num[N],dp[N],c[N]; int LIS(int *d){ memset(c,0,sizeof(c)); c[1]=d[1]; int l,r,mid,len=1; for(int i=2;i<=n;i++){ l=1; r=len; while(l<=r){ mid=(l+r)/2;…
Removed Interval Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1703 Accepted Submission(s): 558 Problem Description Given a sequence of numbers A=a1,a2,…,aN , a subsequence b1,b2,…,bk of A…
记录一下,O(nlgn)的算法求LIS //HHH #include <iostream> #include <stdio.h> #include <string.h> using namespace std; #define MX 1005 int num[MX]; int dp[MX]; int high[MX]; // 长为i的最小大小 int bi_search(int x,int h) { ,r=h; ; while (l<=r) { ; if (x&g…
int main(){ == key int m; while ( l <= r ) { m = ( l + r ) >> 1; if ( x[m] == key ) return m; else if ( key > x[m] ) l = m + 1; else r = m - 1; } >= key 中最小的 int ret; while ( l <= r ) { m = ( l + r ) >> 1; if ( x[m] >= key ) { r…