codeforces #320 Writing Code (完全背包)
2015-11-12 15:55
337 查看
题目:http://codeforces.com/contest/544/problem/C
题意:有n个程序员,给出每个程序员写一行代码会出现的bug数,现在要写m行的代码,问怎么安排使得总的bug数小于m。
分析:定义dp[i][j][k]为处理可前i个程序员,写了j行代码,出现k个错误的方案数。直接用完全背包推即可。
代码:
题意:有n个程序员,给出每个程序员写一行代码会出现的bug数,现在要写m行的代码,问怎么安排使得总的bug数小于m。
分析:定义dp[i][j][k]为处理可前i个程序员,写了j行代码,出现k个错误的方案数。直接用完全背包推即可。
代码:
#include <bits/stdc++.h> using namespace std; typedef long long LL; typedef unsigned long long ULL; const LL INF = 1E9+9; int n,m,mod; void add(int &a,int x) { a+=x; while(a>=mod) a-=mod; } const int maxn = 600; int dp[maxn][maxn],f[maxn]; int main() { int e,i,j,k; scanf("%d%d%d%d",&n,&m,&e,&mod); for(i=1;i<=n;i++) scanf("%d",&f[i]); dp[0][0]=1; for(i=1;i<=n;i++) for(j=1;j<=m;j++) for(k=0;k<=e;k++) if(k-f[i]>=0) add(dp[j][k],dp[j-1][k-f[i]]); int ans=0; for(k=0;k<=e;k++) add(ans,dp[m][k]); printf("%d\n",ans); return 0; }
相关文章推荐
- 基于Android中dp和px之间进行转换的实现代码
- Android中dip、dp、sp、pt和px的区别详解
- LFC1.0.0 版本发布
- Android px、dp、sp之间相互转换
- HP data protector软件学习1--基本角色与基本工作流程
- HP data protector软件学习2--软件组成与界面介绍
- android中像素单位dp、px、pt、sp的比较
- Android对px和dip进行尺寸转换的方法
- Android根据分辨率进行单位转换-(dp,sp转像素px)
- android 尺寸 dp,sp,px,dip,pt详解
- DP问题各种模型的状态转移方程
- POJ-1695-Magazine Delivery-dp
- nyoj-1216-整理图书-dp
- TYVJ1193 括号序列解题报告
- 对DP的一点感想
- TYVJ上一些DP的解题报告
- soj1005. Roll Playing Games
- 01背包问题
- LeetCode之Maximum Product Subarray
- DP Flow