題目傳送門
【題目大意】
【思路分析】
發現是luogu p1281 書的複製
原題……
思路是二分答案,二分出最小的$max$值之後判斷是否合法,即判斷是否恰好能分成$k$組。
最後的輸出有點麻煩,因為要保證前面的人分到的盡量少,所以要倒序貪心一下,詳見**。
【**實現】
1 #include2 #include3 #include4 #include5 #include6**戳這裡#define g() getchar()
7#define rg register
8#define go(i,a,b) for(rg int i=a;i<=b;i++)
9#define back(i,a,b) for(rg int i=a;i>=b;i--)
10#define db double
11#define ll long long
12#define il inline
13#define pf printf
14#define mem(a,b) memset(a,b,sizeof(a))
15using
namespace
std;
16int
fr()
23while(ch>='
0'&&ch<='
9') w=(w<<1)+(w<<3)+ch-'
0',ch=g();
24return w*q;25}
26const
int m=502;27
intn,m,k;
28ll a[m];
29bool start[m];//
start陣列記錄當前這個數後面是否要劃分
30 il bool
check(rg ll mid)
38 il void put(rg ll x)
46 pf("
%lld
",a[1]);if(start[1]) pf("/"
);47 go(i,2
,m)puts(""
);51
return;52
}53intmain()put(l);64}
65return0;
66 }
uva 714 貪心 二分
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 ...
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,...