不務正業 二分基礎

2021-08-08 17:12:04 字數 2543 閱讀 1847

二分作為查詢利器很實用:

本篇主要講述二分理論

二分解題

二分stl解題

二分模板

非遞推版本

int search(int x)  //二分查詢

else

right=mid-1;

}}

題目:

//二分查詢模板

#include #include #include #include using namespace std;

const int maxn = 100001;

long long int num[maxn];

int n;

int search(int key) //二分查詢

if(fabs(num[left]-key)<=fabs(num[left+1]-key)&&left#include #include using namespace std;

int n;

int a[100002];

int m;

int search(int x)

return -1;

}int main()

sort(a+1,a+n+1);//選出小的更小

scanf("%d",&m);

for(i=1;i<=n;i++)

}printf("no\n");//沒有

return 0;

}

題目是要求得開銷最小的月度劃分的最大開銷,不難看出在極端情況(如 每天開銷為1,1,50,劃分為2個fajo月)時開銷最小值是每天開銷的最大值(50)。因此,我們可以在讀入時找到每天開銷的最大值,作為二分查詢中的左邊界(left)。 

但是右邊界(right)在本題目中並不好找,我們只能盡量將它設大一些,此時列舉極端情況(如 每天開銷為4,5,6,劃分為1個fajo月),則發現最小開銷為每天開銷的總和。於是我們可以把每天開銷的和(sum)作為右邊界使用。 

接下來是二分查詢,此時的mid是作為假定的最小劃分的最大開銷使用。然後我們需要判斷mid是否成立。 

判斷的方法如下: 

嘗試在每一天的開銷中劃分,若該fajo月的開銷總額沒有超過mid,就繼續累加;否則將劃分出的fajo月總數加1,並重新累加下乙個fajo月。在中途若發現該fajo月的開銷已經比mid大,就說明mid是錯誤(false)的。劃分完畢後,比較劃分出的fajo月總數和m(要求劃分出的fajo月總數),若比m大(嚴格」>」),說明mid不正確;反之正確。 

最後需要改變左右邊界值。根據之前判斷的結果,若正確,根據題意,要找到最小的劃分,所以向下查詢(改變right的值);反之,說明mid太小,就向上查詢(改變left的值)。

//月份中最大的花費作為左端點,總花費作為右端點進行二分

#include #include #include using namespace std;

const int maxn = 100009;

int n,m,maxx,right1,ans;

int a[maxn];

int check(int x)

else

}if(yfen<=m)

return 1;

else

return 0;

}int search()

else l = mid+1;

}return ans;

}int main()

cout《左端點為0,右端點為總長度,二分,

根據i,j之間的距離來決定拆除的石板數,依次列舉

#include #include #include using namespace std;

const int maxn = 50020;

int river[maxn];

int l,l,r,n,m;

int mid;

int ans;

int search(int mid)

else wz = i;

}return cnt;

}int main()

n++;

river[n] = l;

l = 0;

r = l;

while(l<=r)

cout<

#include #include #include using namespace std;

const int maxn = 50001;

int a[maxn],b[maxn];

int n,m;

int search(int key,int* vec,int len)

else

r=mid-1;

}return 0;

}int main()

{ int m,n,count;

while(~scanf("%d%d",&m,&n))

{count=0;

if(n==0&&m==0) break;

for(int i=0;i=n)

{sort(a,a+m);

for(int i=0;i

不務正業學Python(一)

python學習 1.python的哲學就是簡單優雅,盡量寫容易看明白的 盡量寫少的 2.python適合開發那些應用?首先網路應用,包括 後台服務 其次是許多日常需要的小工具,包括指令碼任務 另外就是把其他語言開發的程式再包裝起來,方便實用。3.python是解釋型語言,執行速度慢,且 不能加密。...

不務正業 之前端HTML基礎(一)

常用標籤用法 jeverson html roadtitle head html 上述的 注釋中,匆匆一看乙個標準的html文件,除去文件宣告的型別大概是由標籤和內容組成的,對於前端來講html是結構標準,那html的結構是不是就是由這些富有語義化的元素和元素屬性組成的呢,答案是的。熟知了上述的一些...

不務正業?黑莓設立自動駕駛測試中心

未來幾年,黑莓計畫投資1億加元在自動駕駛專案,此舉也是為了實現公司在其他領域業務的增長。近日,黑莓ceo程守宗表示,黑莓將向設在加拿大渥太華的乙個自動駕駛汽車創新中心投資約1億加元 7500萬美元 並創造650個工作崗位。與此同時,黑莓將在自主駕駛汽車上發揮自身在網路安全上的優勢。程守宗說 大多數資...