1//目標學會用猜數字(二分)的方法,換個角度來解決問題
2 #include3 #include
4 #include5
const
int n = 100000;6
7int
a[n],n,m,max;89
void
input()
1018}19
20bool is_part(int x)//
是否能把序列劃分為每個序列之和不大於x的m個子序列
2137
if(s+a[i]>x)//
大於,不能再把當前元素加上了
3849 }else
5053}54
55return
ok;56}57
58int
sum()
5964
65int
binary_solve()
6677
return
x;78}79
80int
main()
8187
/*88
6 389
1 2 3 2 5 4
90*/
此為**……貌似是個高中生寫的,太牛了……
最大值最小化 題解
題目描述 把乙個包含 n 個正整數的序列劃分為 m 個連續的子串行 每個正整數恰好屬於乙個序列 設第 i 個序列的各數之和為 s i 你的任務是讓所有 s i 的最大值盡量小。例如序列 1 2 3 2 5 4 劃分成 3 個序列的最優方案為 1 2 3 2 5 4,其中 s 1 s 2 s 3 分別...
最大值最小化(maxmin)
分析 給定序列後,我們可以知道任意劃分的最大值的取值範圍 0,sum 1.n 一種較慢的方法是列舉每種取值情況,根據列舉值進行序列劃分,若劃分的組數大於m,說明沒有滿足條件的劃分情況,需要增加列舉值 如果劃分的組數小於m,說明找到了滿足條件的劃分情況。時間複雜度為o n sum 思路擴充套件 既然找...
最大值最小化(最大值盡量小)
from 給出是個序列,如1 2 3 2 5 4 將其劃分成m個連續的子串行,每個子串行最少有乙個元素,怎樣使每個子串行的和的最大值最小 include include using namespace std define n 10 define inf 1000 int juge int a,in...