洛谷1281 書的複製
題目描述
現在要把m本有順序的書分給k給人複製(抄寫),每乙個人的抄寫速度都一樣,一本書不允許給兩個(或以上)的人抄寫,分給每乙個人的書,必須是連續的,比如不能把第
一、第三、第四本書給同乙個人抄寫。
現在請你設計一種方案,使得複製時間最短。複製時間為抄寫頁數最多的人用去的時間。
輸入輸出格式
輸入格式:
第一行兩個整數m,k;(k≤m≤500)
第二行m個整數,第i個整數表示第i本書的頁數。
輸出格式:
共k行,每行兩個整數,第i行表示第i個人抄寫的書的起始編號和終止編號。k行的起始編號應該從小到大排列,如果有多解,則盡可能讓前面的人少抄寫。
輸入輸出樣例
輸入樣例#1:
9 31 2 3 4 5 6 7 8 9
輸出樣例#1:
1 56 7
8 9【思路】
二分法+貪心。
二分最大時間t貪心判斷t是否可行,求出最小時間t。
求解t的部分也可以用dp來做,方程為:
d[i][j]=min} }
不過時間性上不比二分。
【**】
1 #include2 #include3using
namespace
std;45
const
int maxn = 500+10;6
struct
node;
9int
t[maxn];
10int
n,m;
1112 inline bool can(int
t) 19
return
false;20
}21void print(int
t) );29}
30for(int i=ans.size()-1;i>=0;i--) cout<"
"<"\n"
;31}32
intmain()
43print(x);
44return0;
45 }
洛谷 1281 書的複製
題解 二分答案,貪心check.然後根據二分出來的答案去計算每個人抄寫的部分,注意要讓前面的人少抄寫,所以從後往前貪心即可。1 include2 include3 include4 define ll long long 5 define rg register 6 define n 200010 ...
洛谷P1281 書的複製
大多數人的錯誤原因 盡可能讓前面的人少抄寫,如果前幾個人可以不寫則不寫,對應的人輸出0 0。不過,已經修改資料,保證每個人都有活可幹。現在要把m本有順序的書分給k給人複製 抄寫 每乙個人的抄寫速度都一樣,一本書不允許給兩個 或以上 的人抄寫,分給每乙個人的書,必須是連續的,比如不能把第 一 第三 第...
dp 洛谷P1281 書的複製
本來以為水題,後來炸了 dp方程這個直接想總不難把 毫無優化的暴力轉移 但是最後輸出方案的時候,不可以按照dp的方案輸出的 因為dp它的方案是讓子節點數值最優 這樣的方案是是不可以保證總的方案最優的 所以要最後貪心輸出答案 就是後面的人經可能的取 include define ll long lon...