codeforces Gym 101102A
2016-10-17 22:22
393 查看
这个就是背包,背包专题做少了,再来20道吧,这是约旦的比赛
dp还是弱啊。。。。
dp还是弱啊。。。。
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long LL; const int MaxN = 15000 + 10; const int mol = 1e9 + 7; LL a[MaxN] , b[MaxN] , f[MaxN] , g[MaxN]; int t , n , m , k , w; void pdo() { memset(f , 0 , sizeof(f)); memset(g , 0 , sizeof(g)); f[0] = (LL)1;//这个是这么回事,0为一种方案 for(int i = 0 ; i < n ; i++){ for(int j = w ; j >= a[i] ; j--){//选取a f[j] = (f[j] + f[j - a[i]])%mol;//这个是这么回事, } } g[0] = (LL)1;//0,为一种方案 for(int i = 0 ; i < m ; i++){ for(int j = w ; j >= b[i] ; j--){//选取b g[j] = (g[j] + g[j - b[i]])%mol;//j为钱数,还有算b[i]钱数 } } LL ans = 0; for(int i = 0 ; i <= w ; i++){ if(abs(i - (w - i)) <= k){//判断小于k ans = (ans + g[i] * f[w - i])%mol;//然后g,f,符合条件相乘 } } printf("%d\n",ans); } int main() { scanf("%d",&t); while(t--){ scanf("%d %d %d %d",&n ,&m ,&k ,&w); for(int i = 0 ; i < n ; i++) scanf("%d",&a[i]); for(int i = 0 ; i < m ; i++) scanf("%d",&b[i]); pdo(); } }
相关文章推荐
- Codeforces Gym 100814C Connecting Graph (并查集, 树链剖分)
- Codeforces GYM 100962E: Elvis Presley 题解
- codeforces GYM 100114 J. Computer Network 无相图缩点+树的直径
- codeforces gym 100645A
- Codeforces Gym 101064E A Word to Trump All [AC自动机+bfs]
- Codeforces Gym - 101234J Zero Game [单调队列]
- CodeForces Gym 100989H Queue (A)
- codeforces Gym - 101485 A (2015-2016 Northwestern European Regional Contest (NWERC 2015))
- CodeForces Gym 100735B 矩阵快速幂
- Codeforces GYM 100753J: Souvenirs 题解
- Codeforces Gym 100819S Surf
- Codeforces Gym 100463E Spies 并查集
- Codeforces Gym 100269A Arrangement of Contest 水题
- Codeforces Gym 2015 ACM Arabella Collegiate Programming Contest
- Codeforces gym 100685 C. Cinderella 水题
- Codeforces Gym 100342C Problem C. Painting Cottages 暴力
- Codeforces Gym 100286J Javanese Cryptoanalysis 傻逼暴力
- 【模拟】NEERC15 E Easy Problemset (Codeforces GYM 100851)
- Codeforces Gym 100203H Highways 最小生成树
- cf/Codeforces Gym 100548F Color (容斥原理)