///二分解決,學習了
#includeusing namespace std;
int a[100000+10];
int n; //天數
int m; //規定的分組數
/*判斷用當前的mid值能把天數n分成幾組*/
/*通過比較group與m的大小,對mid值進行優化*/
int binary(int key)
} return cnt;
}int main()
/*
以下的二分是乙個模板操作來著的,只要思想匹配就可以使用模板
這個模板的意思是 因為這個mid是有很多個數多可以滿足的,但題目要求的是求出最小
所以使用的模板就是 在 乙個有序的序列中,查詢第乙個大於某個數的下標
要的是第乙個!!!!! 所以在二分的時候 需要將取等的情況放在high=mid-1的位置
目的就是為了不斷讓high向下指,使得mid不斷的逼近第乙個滿足題意的值
最終3個肯定會指向同乙個位置,此時會通過最後一次的比較得到答案
*/ /*謝謝之前博主的總結,讓我受益匪淺,學習到很多東西,對惡人有更加全面的理解
總覺得二分最重要的一點,就是在邊界細節的處理,只要理解這個,相信對二分有更加深刻的理解
還有另外幾種模板,注意理解本質即可,需要的時候只要思想一致,就可以使用
這裡有我之前看的那位博主的鏈結,需要的可以查閱下,表示很受用,謝謝
*/ int mid;
while(low<=high)
printf("%d\n",low);
} return 0;
}
//嘻嘻嘻,這是我第一次寫的暴搜的結果,哈哈哈,用來驗證二分演算法思想的正確與否,哼,演算法競賽寶典居然有一組測試資料是錯的,嚇得我趕緊用暴搜檢查
#include#includeusing namespace std;
#define n 100000+10
int a[n];
int sum[n]=;
int ans,n,m;
void dfs(int k,int p,int max)
for(int i=p; i<=n-m+k; i++)//注意這裡的n-m+k不是單純的份數,而是對應的下標最大的列舉數 }
int main()
dfs(1,1,0);
printf("%d\n",ans);
} return 0;
}
演算法競賽寶典 遞迴演算法
p1498 南蠻圖騰 include include include using namespace std int n char a 5 5 b 3000 10 3000 10 int main p1049 裝箱問題 include using namespace std int a 30 1 i...
演算法競賽寶典 分治演算法 聰明的質檢員
題目 聰明的質監員 qc.pas cpp in out 題目描述 小 t 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有n 個礦石,從1到n 逐一編號,每個礦石都有自己的重量wi 以及價值vi。檢驗礦產的流程是 1 給定m 個區間 li,ri 2 選出乙個引數w 3 對於乙個區間 li,...
演算法競賽寶典 遞迴演算法 八皇后
八皇后問題,是乙個古老而著名的問題,是 回溯演算法 的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有76種方案。1854年在柏林的象棋雜誌上不同的作者發...