Light OJ 1125 Divisible Group Sums 背包DP 2017/1/23
来源:互联网 发布:苹果电脑mac地址 编辑:程序博客网 时间:2024/05/01 05:35
题目链接:https://vjudge.net/problem/LightOJ-1125
题意:
给出N个32位有符号整数,Q次询问,每次询问从N个数中选出M个数并且这M个数的和能够整除D的方案数
数据
输入第一行表示数据组数 T,T <= 20
对于每组测试数据,第一行为 N 和 Q,0 < N <= 200,0 < Q <= 10
接下来Q行为 D 和 M,0 < D <= 20,0 < M <= 10
输入
2
10 2
1
2
3
4
5
6
7
8
9
10
5 1
5 2
5 1
2
3
4
5
6
6 2
输出
Case 1:
2
9
Case 2:
1
解题方法: dp[i][j][k] 考虑前i个数字从中取出j个 mod D = k 的个数。
状态转移方程:dp[i][j][k] = dp[i-1][j][k]+dp[i-1][j-1][((k-a[i])%d+d)%d]; 其实这就是背包的模型。
代码如下:
#include <bits/stdc++.h>using namespace std;const int maxn = 220;typedef long long LL;int n, q, m, d, a[maxn];LL dp[220][20][20];void work(){ dp[0][0][0] = 1; for(int i = 1; i <= n; i++){ dp[i][0][0] = 1; for(int j = 1; j <= min(i, m); j++){ for(int k = 0; k < d; k++){ dp[i][j][k] = dp[i - 1][j][k] + dp[i - 1][j - 1][((k - a[i]) % d + d) % d]; } } } cout << dp[n][m][0] << endl;}int main(){ int T, ks = 0; scanf("%d", &T); while(T--){ scanf("%d%d", &n, &q); for(int i = 1; i <= n; i++){ scanf("%d", &a[i]); } printf("Case %d:\n", ++ks); while(q--){ scanf("%d%d", &d, &m); work(); } } return 0;}
0 0
- Light OJ 1125 Divisible Group Sums 背包DP 2017/1/23
- Light oj 1125 - Divisible Group Sums(简单dp)
- Light OJ 1125 Divisible Group Sums (DP)
- 10616 - Divisible Group Sums(dp背包)
- LightOJ - 1125 Divisible Group Sums(DP)
- 1125 - Divisible Group Sums (DP)
- LightOJ 1125 Divisible Group Sums (dp)
- UVA10616 - Divisible Group Sums(dp)
- lightoj 1125 - Divisible Group Sums 01背包变形
- lightoj 1125 - Divisible Group Sums
- UVa 10616 Divisible Group Sums (DFS&DP)
- Divisible Group Sums LightOJ
- lightoj1125:Divisible Group Sums(类01背包)
- Light OJ 1231(背包dp)
- UVA 10616 Divisible Group Sums
- UVa:10616 Divisible Group Sums
- UVa 10616 - Divisible Group Sums
- Light OJ-----1097 01背包dp
- Python进程和线程操作
- Python学习day5作业
- 单应性矩阵
- JS页面时钟
- Hello! CSDN
- Light OJ 1125 Divisible Group Sums 背包DP 2017/1/23
- tomcat8配置https ARP方式
- 【c++】继承
- 链表List的代码,但是缺少保护
- 在VS2015中使用SDL2.0
- 已知二叉树的后序遍历和中序遍历求前序遍历(二叉树)
- 安卓逆向系列教程 4.1 字符串资源
- 洛谷P1316 丢瓶盖
- 面向对象