P2511 HAOI2008 木棍分割

2022-04-29 03:00:09 字數 747 閱讀 8835

目錄有n根木棍, 第i根木棍的長度為li,n根木棍依次鏈結了一起, 總共有n-1個連線處. 現在允許你最多砍斷m個連線處, 砍完後n根木棍被分成了很多段,要求滿足總長度最大的一段長度最小, 並且輸出有多少種砍的方法使得總長度最大的一段長度最小. 並將結果mod 10007。。。

二分答案+動態規劃

#include #include #include #include const int mod = 10007;

const int n = 50005;

int l[n];

bool judge(int lim, int n, int m)

return used <= m;

}int s[n], p[n];

int f1[n], f2[n];

int get(int l, int n, int m)

res = (res + f[n]) % mod;

f[0] = 0;

for (int j = 1; j <= n; j += 1)

f[j] = (f[j - 1] + f[j]) % mod;

std:: swap(f, g);

}return (res + mod) % mod;

}int main ()

printf("%d ", l);

printf("%d\n", get(l, n, m));

return 0;

}

P2511 HAOI2008 木棍分割

傳送門 第乙個問題直接二分答案 然後第二個問題直接在二分出的答案下跑一遍 dp 設 f i j 表示當前已經切了 i 次考慮完前 j 個位置並且強制切 j,j 1 時的方案數 那麼有轉移 f i j sum f i 1 k 發現隨著 j 增加 l 不減,所以轉移可以用字首和並動態維護左端點優化到 o...

洛谷 P2511 HAOI2008 木棍分割

這題卡常,別用long long 這題第一問好搞,直接二分答案 第二問,凡是看到求方案數並於組合數一定沒有關係的一定用 dp 解決!然後定義狀態,顯然 轉移就是 然後我就不會優化了,看了題解,發現自己思維僵化竟然如此簡單 然後可以用字首和優化 要用滾動陣列 luogu judger enable o...

木棍分割 HAOI2008

有n根木棍,第i根木棍的長度為li,n根木棍依次鏈結了一起,總共有n 1個連線處.現在允許你最多砍斷m個連 接處,砍完後n根木棍被分成了很多段,要求滿足總長度最大的一段長度最小,並且輸出有多少種砍的方法使得總長 度最大的一段長度最小.並將結果mod 10007。輸入檔案第一行有2個數n,m.接下來n...