UVA714 Copying books 題解報告

2022-04-28 20:27:09 字數 1240 閱讀 4277

題目傳送門

【題目大意】

【思路分析】

發現是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,...