codeforces 543A A. Writing Code(完全背包优化dp )
来源:互联网 发布:三国无双7萝莉捏脸数据 编辑:程序博客网 时间:2024/05/14 00:43
题目连接:
codeforces 543A
题目大意:
n个程序员写m行代码,第i个程序员写第i行代码会出现
题目分析:
首先容易想到三位的dp:
- 定义dp[i][j][k]为前i个程序员写完j行代码出现k个bugs的方案数。
-
- 但是上面的转移方程式
- 所以我们利用完全背包的思想进行优化,将情况划分子问题的时候考虑为当前程序员多写一行和不多写这一行两种情况,那么方程优化为:
-
- 而且我们发现在更新的过程中去掉i-1这一维度对计算过程没有影响,所以空间也得到了优化,优化过后空间复杂度
AC代码:
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#define MAX 507using namespace std;int n,m,b,mod;int a[MAX];int dp[MAX][MAX];int main ( ){ while (~scanf ("%d%d%d%d" , &n , &m , &b , &mod )) { for ( int i = 1 ; i <= n ; i++ ) scanf ( "%d" , &a[i] ); memset ( dp , 0 , sizeof ( dp )); dp[0][0] = 1; for ( int i = 1 ; i <= n ; i++ ) for ( int j = 1 ; j <= m ; j++ ) for ( int k = 0; k <= b ; k++ ) if ( k >= a[i] ) { dp[j][k] += dp[j-1][k-a[i]]; dp[j][k] %= mod; } int ans = 0; for ( int k = 0 ; k <= b ; k++ ) { ans += dp[m][k]; ans %= mod; } printf ( "%d\n" , ans ); }}
0 0
- codeforces 543A A. Writing Code(完全背包优化dp )
- [Codeforces 543A] Writing Code (完全背包DP)
- codefroces 543A Writing Code dp优化 完全背包
- codeforces 543A Writing Code(dp降维优化,完全背包思想)
- Codeforces 543A Writing Code 【滚动数组优化dp】
- Writing Code - CodeForces 543 A dp
- Codeforces 543A. Writing Code DP
- CodeForces 543A Writing Code(DP)
- codeforces 543A Writing Code (dp)
- [CodeForces 543A]Writing Code[DP]
- Codeforces 543 A Writing Code 计数DP
- Codeforces 543A. Writing Code DP
- CodeForces 543A-Writing Code
- Codeforces Round #302 (Div. 1) 543A Writing Code(dp)
- codeforces #320 Writing Code (完全背包)
- codeforces 543A 完全背包
- !CodeForces 543A Writing Code --DP--(三维dp,滚动数组)
- codeforce 543A Writing Code
- js事件委托
- Executor 的工具类 Executors
- 南邮 OJ 1048 图的宽度优先遍历序列
- Oracle 常用命令总结
- Python 学习 字符串
- codeforces 543A A. Writing Code(完全背包优化dp )
- 链式队列基本操作
- 开发所用的一些工具,navicat破解,myeclipse破解,
- Eclipse中web-inf和meta-inf文件夹的信息
- VI/VIM以指定编码方案打开文件
- webview使用
- HDU - 5136(计数dp)
- The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.
- position的使用方法