标签:style color io os ar for 问题 sp 代码
这场就出了3题。。就坑在这题上了,还好保住了名额
思路:要推出最大值的时候,每个人的属性和必然相同,并且这个和必然是所有和 / 2,这样的话,问题转化为给n个数字,要组合成sum / 2有多少种方法,就用dp背包推一遍就可以得解了。
现场的时候就没推出sum / 2就是答案
代码:
#include <cstdio> #include <cstring> const int MOD = 1000000007; const int N = 2005; int t, n, dp[N], T[N]; int main() { scanf("%d", &t); while (t--) { scanf("%d", &n); int sum = 0; for (int i = 1; i <= n; i++) { scanf("%d", &T[i]); sum += T[i]; } sum /= 2; memset(dp, 0, sizeof(dp)); dp[0] = 1; for (int i = 1; i <= n; i++) { for (int k = sum; k >= 0; k--) { for (int j = 1; j <= T[i]; j++) { if (k - j < 0) break; dp[k] = (dp[k] + dp[k - j]) % MOD; } } } printf("%d\n", dp[sum]); } return 0; }
标签:style color io os ar for 问题 sp 代码
原文地址:http://blog.csdn.net/accelerator_/article/details/39255753