P1077 擺花 dp 搜尋)

2021-10-06 23:28:22 字數 2314 閱讀 3426

傳送門

思路:dpdp

dp的經典題,若沒有思路先嘗試爆搜,會t

tt掉,然後記憶化一下就可以acac

ac,當然能用記憶化搜尋,肯定也能dpdp

dp了,最後根據別的大佬的推出來是01

0101

揹包。tql

tqltq

l…搜尋**:

#include

using

namespace std;

typedef

long

long ll;

const

int n=

105,mod=

1e6+7;

#define mst(a) memset(a,0,sizeof a)

#define lx x<<1

#define rx x<<1|1

#define reg register

#define pii pair

#define fi first

#define se second

inline

void

read

(int

&x)for

(;ch>=

'0'&&ch<=

'9';ch=

getchar()

) x=

(x<<3)

+(x<<1)

+(ch&15)

; x*

=w;}

int n,m,dp[n]

[n],a[n]

;//dp[i][j]表示從第i種花開始搜,初始sum=j到達目標值(n,m)的最大方案。

intdfs

(int id,

int sum)

intmain()

滾動陣列dpdp

dp。

#include

using

namespace std;

typedef

long

long ll;

const

int n=

105,mod=

1e6+7;

#define mst(a) memset(a,0,sizeof a)

#define lx x<<1

#define rx x<<1|1

#define reg register

#define pii pair

#define fi first

#define se second

inline

void

read

(int

&x)for

(;ch>=

'0'&&ch<=

'9';ch=

getchar()

) x=

(x<<3)

+(x<<1)

+(ch&15)

; x*

=w;}

int n,m,dp[2]

[n],a[n]

;int

main()

printf

("%d\n"

,dp[n%2]

[m])

;return0;

}

01揹包**:

#include

using

namespace std;

typedef

long

long ll;

const

int n=

105,mod=

1e6+7;

#define mst(a) memset(a,0,sizeof a)

#define lx x<<1

#define rx x<<1|1

#define reg register

#define pii pair

#define fi first

#define se second

inline

void

read

(int

&x)for

(;ch>=

'0'&&ch<=

'9';ch=

getchar()

) x=

(x<<3)

+(x<<1)

+(ch&15)

; x*

=w;}

int n,m,dp[n]

,a[n]

;int

main()

P1077 擺花 揹包DP

小明的花店新開張,為了吸引顧客,他想在花店的門口擺上一排花,共m盆。通過調查顧客的喜好,小明列出了顧客最喜歡的n種花,從1到n標號。為了在門口展出更多種花,規定第iii種花不能超過 a i 盆,擺花時同一種花放在一起,且不同種類的花需按標號的從小到大的順序依次擺列。試程式設計計算,一共有多少種不同的...

擺花 洛谷p1077

小明的花店新開張,為了吸引顧客,他想在花店的門口擺上一排花,共m盆。通過調查顧客的喜好,小明列出了顧客最喜歡的n種花,從1到n標號。為了在門口展出更多種花,規定第i種花不能超過ai盆,擺花時同一種花放在一起,且不同種類的花需按標號的從小到大的順序依次擺列。試程式設計計算,一共有多少種不同的擺花方案。...

洛谷 P1077 擺花

題目原位址 2 4 3 2 輸出 2首先,我們想到的一定是暴力dfs 20分 include include using namespace std int n,m,ans,a 105 b 105 void dfs int k,int space if k n return for int i mi...