傳送門
思路: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...