有n本書,分給m個人抄,每個人只能拿到連續的書(不能把一本書分開),問抄書最多的人要抄多少頁9 3
100 200 300 400 500 600 700 800 9001700對於10%的資料,有n<=10
對於50%的資料,有n<=500;
對於100%的資料,有n<=3000;這道題很可能想到dp但會炸,我們要用二分列舉答案,然後用一衝迴圈來把書分配給每個人
#include
#include
#include
using
namespace std;
int n,m,num,maxn,l,r,mid,p,w,b[
3005
],a[
3004];
intmain()
l=num;
//最小的
r=maxn;
//最大的
while
(l<=r)
b[++w]
+=a[i]
;//有人就換乙個人}if
(p) r=mid-1;
//二分
else l=mid+1;
//二分
}printf
("%d"
,l);
return0;
}
JZOJ 二分 抄書
與書的複製差不多 洛谷 書的複製 但是只要輸出最大的時間 樣例輸入9 3 100 200 300 400 500 600 700 800 900樣例輸出1700樣例解釋1 1500 100 200 300 400 500 2 1300 600 700 3 1700 800 900 1300 1500...
二分 CodeVS3162 抄書問題
description 題目描述 現在要把m mm本有順序的書分給k kk個人複製 抄寫 每乙個人的抄寫速度都一樣,一本書不允許給兩個 或以上 的人抄寫,分給每乙個人的書,必須是連續的,比如不能把第 一 第三 第四本書給同乙個人抄寫。現在請你設計一種方案,使得複製時間最短。複製時間為抄寫頁數最多的人...
UVa 714 抄書(貪心 二分)
題意 把乙個包含m個正整數的序列劃分成k個非空的連續子串行,使得每個正整數恰好屬於乙個序列。設第i個序列的各數之和為s i 你的任務是讓所有s i 的最大值盡量小。思路 最大值盡量小 問題。區間的範圍肯定是所有數中最大的乙個至所有數之和,我們可以使用二分法來確定這樣的乙個值x,x盡量小並且每個區間都...