洛谷 P1077 摆花 (背包DP)
2024-09-08 05:29:24
题意:有\(n\)种花,每种花有\(a_i\)盆,现在要摆\(m\)盆花,花的种类从\([1,n]\)有序排放,问有多少种方案数.
题解:这题可以借用01背包的思路,感觉更好想一点,我们首先枚举\(n\)种花,然后按一维01背包的思路,再枚举第\(i\)种花的选取盆数\([1,min(a_i,j)]\),每次状态都由\(dp[j-k]\)转化而来,有点难想的是边界问题,因为我们只能先放第一种花,第一个位置必须放第一种花,所以我们让\(dp[0]=1\),只有当一个位置放了第一盆花之后,后面的花的状态才能得到更新.
代码:
int n,m;
int a[N];
int dp[N]; int main() {
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;++i){
cin>>a[i];
}
dp[0]=1;
for(int i=1;i<=n;++i){
for(int j=m;j>=1;--j){
for(int k=1;k<=min(a[i],j);++k){
dp[j]=(dp[j]+dp[j-k])%mod;
//cout<<i<<" "<<" "<<j<<" "<<dp[j]<<endl; 这里便于理解状态之间的关系
}
}
} cout<<dp[m]<<endl; return 0;
}
最新文章
- sublime3添加对react代码检查
- (转)对SQLSERVER数据库事务日志的疑问
- java集合比较
- 【JavaScript】常用方法
- cd命令进入D盘
- Extjs 视频教程
- android studio1.3安装终于成功
- linux两台server远程copy文件
- 【the service mysql57 failed the most】
- MySQL 服务器变量 数据操作DML-视图
- Android SDK Web SDK 接口测试总结
- ecshop调用指定分类和个数的文章列表
- 个人作业2-英语学习案例app分析
- 流API--分组和分片
- 采用JSP+JavaBean的方式进行简单的实现用户的网页登陆实例
- 编码原则 之 Explicit Dependencies Principle
- hdu 6170 Two strings dp
- (待解决,效率低下)47. Permutations II C++回溯法
- 关于Powershell对抗安全软件(转)
- PostgreSQL高可用集群方案收集/主从切换/一主多从(待实践)
热门文章
- HAProxy + keepalived 高可用集群代理
- upload-labs 1-21关通关记录
- 一文带你学会AQS和并发工具类的关系2
- 【MySql】[ERROR] Can't read from messagefile '/usr/share/mysql/english/errmsg.sys'
- python之格式化字符串速记整理
- Python批量 png转ico
- Python编程小技巧(一)
- vue+element-ui:table表格中的slot 、formatter属性
- mybatis缓存源码分析之浅谈缓存设计
- 【Windows】Win10家庭版启用组策略gpedit.msc