首页 > 代码库 > HDU 5000 Clone(鞍山网络赛D题)
HDU 5000 Clone(鞍山网络赛D题)
HDU 5000 Clone
这场就出了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; }
HDU 5000 Clone(鞍山网络赛D题)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。