hdu 5800 To My Girlfriend (dp)
来源:互联网 发布:北京金和网络股份员工 编辑:程序博客网 时间:2024/05/21 04:20
Problem Description
Dear Guo
I never forget the moment I met with you.You carefully asked me: "I have a very difficult problem. Can you teach me?".I replied with a smile, "of course"."I have n items, their weight was a[i]",you said,"Let's define f(i,j,k,l,m) to be the number of the subset of the weight of n items was m in total and has No.i and No.j items without No.k and No.l items.""And then," I asked.You said:"I want to know
∑i=1n∑j=1n∑k=1n∑l=1n∑m=1sf(i,j,k,l,m)(i,j,k,laredifferent)
Sincerely yours,
Liao
I never forget the moment I met with you.You carefully asked me: "I have a very difficult problem. Can you teach me?".I replied with a smile, "of course"."I have n items, their weight was a[i]",you said,"Let's define f(i,j,k,l,m) to be the number of the subset of the weight of n items was m in total and has No.i and No.j items without No.k and No.l items.""And then," I asked.You said:"I want to know
Sincerely yours,
Liao
Input
The first line of input contains an integer T(T≤15) indicating the number of test cases.
Each case contains 2 integersn , s (4≤n≤1000,1≤s≤1000) . The next line contains n numbers: a1,a2,…,an (1≤ai≤1000) .
Each case contains 2 integers
Output
Each case print the only number — the number of her would modulo 109+7 (both Liao and Guo like the number).
Sample Input
24 41 2 3 44 41 2 3 4
Sample Output
88
解为 dp【n】【2】【2】【1~s】
#include <set>#include <map>#include <stack>#include <queue>#include <deque>#include <cmath>#include <vector>#include <string>#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define L(i) i<<1#define R(i) i<<1|1#define INF 0x3f3f3f3f#define pi acos(-1.0)#define eps 1e-9#define maxn 10010#define MOD 1000000007long long ans;int T;const int mod = 1e9 +7;int n,s;int a[1010];int dp[1010][3][3][1010];int main(){ scanf("%d",&T); while(T--) { scanf("%d%d",&n,&s); for(int i=1; i<=n; i++) scanf("%d",&a[i]); memset(dp,0,sizeof(dp)); dp[0][0][0][0]=1; ans=0; for(int i=1; i<=n; i++) { for(int j=0; j<=s; j++) { for(int t=0; t<=2; t++) for(int k=0; k<=2; k++) { dp[i][t][k][j] = dp[i-1][t][k][j]; if(j>=a[i]) { dp[i][t][k][j] = (dp[i][t][k][j] + dp[i-1][t][k][j-a[i]]) % mod; //choose if(t>0) dp[i][t][k][j] = (dp[i][t][k][j] + dp[i-1][t-1][k][j-a[i]]) %mod; } // no choose if(k>0) dp[i][t][k][j] = (dp[i][t][k][j] + dp[i-1][t][k-1][j]) %mod; } } }// for(int i=1; i<=n; i++)// {// for(int j=0; j<=s; j++)// for(int t=0; t<=2; t++)// for(int k=0; k<=2; k++)// {// printf("dp[%d][%d][%d][%d] = %d\n",i,t,k,j,dp[i][t][k][j]);// }// } for(int i=0; i<=s; i++) ans =(ans + dp[n][2][2][i])%mod; printf("%I64d\n",ans*4 %mod); } return 0;}
0 0
- HDU-5800-To My Girlfriend-DP
- hdu 5800 To My Girlfriend (dp)
- HDU 5800 To My Girlfriend(dp)
- HDU 5800 To My Girlfriend(dp)
- HDU 5800 To My Girlfriend 【DP】
- HDU 5800 To My Girlfriend 【DP】
- HDU 5800 To My Girlfriend(DP)
- HDU 5800 To My Girlfriend
- hdu 5800 To My Girlfriend
- [HDU 5800] To My Girlfriend (计数DP)
- HDU 5800 - To My Girlfriend-四维DP
- HDU 5800 To My Girlfriend(计数DP)
- 【hdu 5800】To My Girlfriend dp+乱搞+总结
- To My Girlfriend HDU
- 【HDOJ 5800】To My Girlfriend(DP)
- Problem To My Girlfriend (HDU 5800)
- HDU 5800 To My Girlfriend (动态规划)
- HDU 5800 To My Girlfriend【动态规划】
- codeforces 17D. Notepad 欧拉函数降幂
- Dom4j解析XML
- 深入理解java异常处理机制
- 类和类之间的关系
- android---------菜鸟集成环信(头像,昵称)
- hdu 5800 To My Girlfriend (dp)
- 数学在计算机图形学中的应用
- Ubuntu安装xgboost
- Activiti(八)——并行网关(ParallelGateWay)
- 深入分析 ThreadLocal 内存泄漏问题
- 大国崛起(一)
- Activity的生命周期及方法
- 离散化—vector
- 自己动手做ML算法系列(1)– Gradient Descent