CF544 C 背包 DP
n个人写m行代码,第i人写一行代码有a[i]个bug,问总bug数不超过b的不同方案数。
其实就是个背包,dp[i][j][k]代表前i个人写了j行代码用了k个bug限度,然后随便转移一下就好了
/** @Date : 2017-08-27 21:13:25
* @FileName: C 完全背包DP.cpp
* @Platform: Windows
* @Author : Lweleth (SoungEarlf@gmail.com)
* @Link : https://github.com/
* @Version : $Id$
*/
#include <bits/stdc++.h>
#define LL long long
#define PII pair<int ,int>
#define MP(x, y) make_pair((x),(y))
#define fi first
#define se second
#define PB(x) push_back((x))
#define MMG(x) memset((x), -1,sizeof(x))
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std; const int INF = 0x3f3f3f3f;
const int N = 1e5+20;
const double eps = 1e-8; LL dp[600][600];
LL v[600];
LL mod, n, m, b;
int main()
{
while(cin >> n >> m >> b >> mod)
{
for(int i = 0; i < n; i++)
scanf("%lld", v + i);
MMF(dp);
dp[0][0] = 1;
for(int i = 0; i < n; i++)
{
for(int j = 1; j <= m; j++)
{
for(int k = 0; k <= b; k++)
{
if(k < v[i])
continue;
dp[j][k] = (dp[j][k] + dp[j - 1][k - v[i]] + mod) % mod;
}
}
}
LL ans = 0;
for(int i = 0; i <= b; i++)
ans = (ans + dp[m][i] + mod) % mod;
printf("%lld\n", ans);
}
return 0;
}
CF544 C 背包 DP的更多相关文章
- 背包dp整理
		
01背包 动态规划是一种高效的算法.在数学和计算机科学中,是一种将复杂问题的分成多个简单的小问题思想 ---- 分而治之.因此我们使用动态规划的时候,原问题必须是重叠的子问题.运用动态规划设计的算法比 ...
 - hdu 5534 Partial Tree 背包DP
		
Partial Tree Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...
 - HDU 5501 The Highest Mark 背包dp
		
The Highest Mark Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...
 - Codeforces Codeforces Round #319 (Div. 2) B. Modulo Sum 背包dp
		
B. Modulo Sum Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/577/problem/ ...
 - noj [1479] How many (01背包||DP||DFS)
		
http://ac.nbutoj.com/Problem/view.xhtml?id=1479 [1479] How many 时间限制: 1000 ms 内存限制: 65535 K 问题描述 The ...
 - HDU 1011 树形背包(DP) Starship Troopers
		
题目链接: HDU 1011 树形背包(DP) Starship Troopers 题意: 地图中有一些房间, 每个房间有一定的bugs和得到brains的可能性值, 一个人带领m支军队从入口(房 ...
 - BZOJ 1004: [HNOI2008]Cards( 置换群 + burnside引理 + 背包dp + 乘法逆元 )
		
题意保证了是一个置换群. 根据burnside引理, 答案为Σc(f) / (M+1). c(f)表示置换f的不动点数, 而题目限制了颜色的数量, 所以还得满足题目, 用背包dp来计算.dp(x,i, ...
 - G - Surf Gym - 100819S -逆向背包DP
		
G - Surf Gym - 100819S 思路 :有点类似 逆向背包DP , 因为这些事件发生后是对后面的时间有影响. 所以,我们 进行逆向DP,具体 见代码实现. #include<bit ...
 - 树形DP和状压DP和背包DP
		
树形DP和状压DP和背包DP 树形\(DP\)和状压\(DP\)虽然在\(NOIp\)中考的不多,但是仍然是一个比较常用的算法,因此学好这两个\(DP\)也是很重要的.而背包\(DP\)虽然以前考的次 ...
 
随机推荐
- 第六周的PSP
			
本周PSP: 本周进度条: 累积进度图:: 本周PSP饼状图:
 - Java微笔记(6)
 - eclipse建包的一些细节
			
com.a :com.b 等会先在com文件夹下在 建立 a,b两个子文件夹,引用路径时 不可"*\\com.a\\*"而是"*\\com\\a\\*"这点基础 ...
 - TCP系列46—拥塞控制—9、SACK下的快速恢复与Limited transmit
			
一.概述 1.SACK下的特殊处理过程 SACK下的拥塞控制处理是linux中拥塞控制的实现依据,再次强调一遍RFC6675的重要性,linux中拥塞控制主体框架的实现是与RFC6675一致的,所以如 ...
 - Scrum Meeting Beta - 1
			
Scrum Meeting Beta - 1 NewTeam 2017/11/28 地点:主南201 任务反馈 团队成员 完成任务 计划任务 安万贺 详细讨论Beta阶段的任务和具体分工 了解缓存的相 ...
 - 软工网络15团队作业4——Alpha阶段敏捷冲刺-8
			
一.当天站立式会议照片: 二.项目进展 昨天已完成的工作: 服务器的完善,后端配置的修改. 明天计划完成的工作: 完善各个功能以及修改bug. 工作中遇到的困难: 服务器的语言编程困难,后端调试中不断 ...
 - [微软官网]One Windows Kernel
			
One Windows Kernel https://techcommunity.microsoft.com/t5/Windows-Kernel-Internals/One-Windows-Kerne ...
 - phaser入手
			
做phaser小程序,必须先把环境弄好 发现怎么导入都无济于事. 最后决定亲自操刀,在原代码中,引入全局变量.
 - 【前端学习笔记】JavaScript 小案例合集
			
获取一个0-9的随机数: Math.round(Math.random()*9); 去除数组中重复的元素: var arr=[1,3,5,4,3,3,1,4] function editArr(arr ...
 - 集成学习—boosting和bagging异同
			
集成学习 集成学习通过构建并结合多个学习器来完成学习任务.只包含同种类型的个体学习器,这样的集成是“同质”的:包含不同类型的个体学习器,这样的集成是“异质”的.集成学习通过将多个学习器进行结合,常可获 ...