這題卡常,別用long long
這題第一問好搞,直接二分答案
第二問,凡是看到求方案數並於組合數一定沒有關係的一定用 dp 解決!
然後定義狀態,顯然
轉移就是
然後我就不會優化了,看了題解,發現自己思維僵化竟然如此簡單
然後可以用字首和優化
要用滾動陣列
// luogu-judger-enable-o2
# include const int n = 100000 + 5 ;
int sum [ n ] , pre [ 2 ] [ n ] , dp [ 2 ] [ n ] , l [ n ] , ans1 , ans2 ;
int to [ n ] , n , m , now , inf = 1e9 + 7 , mod = 10007 ;
bool check ( int lim )
return cnt <= m ;
}int divx ( int l , int r )
return ans ;
}int main ( )
for ( int i = 1 ; i <= n ; i ++ )
if ( sum [ i ] <= ans1 )
dp [ 0 ] [ i ] = 1 ;
for ( int i = 1 ; i <= n ; i ++ )
pre [ 0 ] [ i ] = ( pre [ 0 ] [ i - 1 ] + dp [ 0 ] [ i ] ) % mod ;
now = 1 ;
for ( int i = 1 ; i <= m ; i ++ )
printf ( "%d %d" , ans1 , ans2 ) ;
return 0 ;}/*
3 2 1 1
10*/
P2511 HAOI2008 木棍分割
目錄有n根木棍,第i根木棍的長度為li,n根木棍依次鏈結了一起,總共有n 1個連線處.現在允許你最多砍斷m個連線處,砍完後n根木棍被分成了很多段,要求滿足總長度最大的一段長度最小,並且輸出有多少種砍的方法使得總長度最大的一段長度最小.並將結果mod 10007。二分答案 動態規劃 include i...
P2511 HAOI2008 木棍分割
傳送門 第乙個問題直接二分答案 然後第二個問題直接在二分出的答案下跑一遍 dp 設 f i j 表示當前已經切了 i 次考慮完前 j 個位置並且強制切 j,j 1 時的方案數 那麼有轉移 f i j sum f i 1 k 發現隨著 j 增加 l 不減,所以轉移可以用字首和並動態維護左端點優化到 o...
洛谷P1450 HAOI2008 硬幣購物
硬幣購物一共有4種硬幣。面值分別為c1,c2,c3,c4。某人去商店買東西,去了tot次。每次帶di枚ci硬幣,買si的價值的東西。請問每次有多少種付款方法。輸入格式 第一行 c1,c2,c3,c4,tot 下面tot行 d1,d2,d3,d4,s 輸出格式 每次的方法數 輸入樣例 1 1 2 5 ...