#include
using namespace std;
const
int maxm=
500;
int k,m,p[maxm]
;bool solve
(int ans)
else pre+
=p[i];}
return kr<=k;
}// void print(int ans)
// else pre+=p[i];
// }
// for(int i=0;i
// printf("%d ",p[i]);
// if(last[i]) printf("/ ");
// }
// printf("%d",p[m-1]);
// }
int last[maxm]
;// last[i] = 1 iff i is the last book assigned to someone
void
print
(long
long ans)
else
}for
(int i =
0; i < m-
1; i++
)printf
("%d\n"
, p[m-1]
);}int
main()
// 貪心:每次盡量往右劃分求是否可以把輸入序列劃分為2連續值且不超過x,其解定義為p(x);p(x)==1表示可以劃分不超過x,否則不成立
// 二分:求解最佳的x值。
while
(maxnelse maxn=m+1;
}// printf("%d\n",maxn);
print
(maxn);}
return0;
}
UVa 714 抄書(貪心 二分)
題意 把乙個包含m個正整數的序列劃分成k個非空的連續子串行,使得每個正整數恰好屬於乙個序列。設第i個序列的各數之和為s i 你的任務是讓所有s i 的最大值盡量小。思路 最大值盡量小 問題。區間的範圍肯定是所有數中最大的乙個至所有數之和,我們可以使用二分法來確定這樣的乙個值x,x盡量小並且每個區間都...
UVA 714 二分最大化最小值
題意 輸入t表示有多個樣例,輸入n,group表示有n個數分為group組使每組和最小 輸出 時注意格式。include include using namespace std define ll long long const int n 500 5 ll a n intvis n ll num,...
二分貪心 21
題目大概 有n堆積木,積木高度不同,每個小方塊高度相同。問,最少移動多少小方塊,使得這些積木堆高度相等。思路 先求這些積木的平均數,在把所有的高度與平均數的差值加起來,最後除2,就是最少移動的方塊數。感想 這個題有一點很坑人,最後輸出的時候有乙個小點,不注意看看不到。include include ...