[HRBUST1472]Coin(dp,计数)
2024-10-14 19:21:45
题目链接:http://acm-software.hrbust.edu.cn/problem.php?id=1472
题意:给n个硬币,面值随意。问恰好凑成m元的种类数(去掉重复)。
dp(i,j,k)表示i个硬币,j元,最大是k时的种类数。
一开始智障记忆化dfs暴T不止,转成递推还是会T。
结果就考虑先给记忆化dfs加一些剪枝,还是T。
再给递推做一些处理,发现是因为枚举当前最大的时候,最大的l如果是j+2了,即使只有它一个,也是大于j+1了。换到这里来看,是前向着递推,那也就是说,题目所述最小面值是1,在递推的时候仅仅维持在j内是不满足的,需要j+1。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod = ;
const int maxn = ;
LL dp[maxn][maxn][maxn];
int n, m; LL dfs(int n, int m, int pre) {
if(dp[n][m][pre] != -) return dp[n][m][pre];
// if(pre > m) return dp[n][m][pre] = 0;
if(n == ) {
if(m == ) return dp[n][m][pre] = ;
return dp[n][m][pre] = ;
}
dp[n][m][pre] = ;
for(int i = pre; i <= m; i++) {
if(m - i < ) break;
dp[n][m][pre] = (dp[n][m][pre] + dfs(n-, m-i, i)) % mod;
}
return dp[n][m][pre];
} int main() {
// freopen("in", "r", stdin);
int T;
scanf("%d", &T);
memset(dp, , sizeof(dp));
dp[][][] = ;
for(int i = ; i <= ; i++) {
for(int j = ; j <= ; j++) {
for(int k = ; k <= ; k++) {
if(dp[i][j][k] == ) continue;
for(int l = k; j + l <= ; l++) {
if(l > j + ) break;
dp[i+][j+l][l] = (dp[i+][j+l][l] + dp[i][j][k]) % mod;
}
}
}
}
while(T--) {
scanf("%d%d",&n,&m);
LL ret = ;
for(int i = ; i <= m; i++) {
ret = (ret + dp[n][m][i]) % mod;
}
printf("%lld\n", ret);
}
return ;
}
最新文章
- sql server 替换特殊符号
- 把textarea右下角的灰点去掉
- OpenFileDialog获取文件名和文件路径问题
- 认识CPU Cache
- linux 中的快捷键
- Android中弹出输入法界面不影响app界面布局
- 使用EA逆向生成数据库E-R图
- hibernate总结四
- 利用svg技术实现在线动画演示
- c 按输入的字母来输出对应效果
- 疯狂Android演讲2 环境配置
- SpriteBuilder实现2D精灵光影明暗反射效果(二)
- SDL 开发实战(二):SDL 2.0 核心 API 解析
- NoSuchMethodError 问题
- vue created中初始化属性
- 行为型---命令模式(Command Pattern)
- 解决Zabbix网页端Get value error: cannot connect to [[192.168.238.139]:10050]: [113] No route to host问题
- @media响应式的屏幕适配
- Monkey测试执行_真机测试(2)
- win7安装sqlserver2008
热门文章
- 用jQuery创建HTML中不存在的标签元素碰到的问题
- Maven3.x 插件开发入门
- [转]Rotate a table in reporting services
- 1. python中的随机函数
- samba服务器源码安装(非rpm)
- Android中的图片压缩
- [ios][opengles]GLKit如何搭一个app的框架
- 最小生成树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind
- 关于plsql表如何创建自增长列
- Labeling Balls 分类: POJ 2015-07-28 19:47 10人阅读 评论(0) 收藏