码迷,mamicode.com
首页 > 其他好文 > 详细

第五周 2.14-2.21

时间:2016-02-14 18:17:26      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

汪!汪汪汪!汪汪!(热烈庆祝ENIAC诞生70周年)

 

2.14

CF 626 F Group Projects

dp[i][j][k]前i人,j组未闭合,总和为k。

每个人转移考虑4种,自成1组,新开1组,加入1组,闭合1组。

技术分享
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 typedef long long LL;
 7 const LL mod = 1e9 + 7;
 8 LL dp[222][1111], cpy[222][1111];
 9 int a[555];
10 
11 int main(void)
12 {
13     int n, k;
14     scanf("%d %d", &n, &k);
15     for(int i = 0; i < n; i++) scanf("%d", a + i);
16     sort(a, a + n);
17     dp[0][0] = 1;
18     for(int i = 0; i < n; i++)
19     {
20         memcpy(cpy, dp, sizeof(cpy));
21         memset(dp, 0, sizeof(dp));
22         for(int j = 0; j <= n; j++)
23         {
24             for(int r = 0; r <= k; r++)
25             {
26                 int t = j * (a[i] - a[i-1]);
27                 if(r + t > k) continue;
28                 dp[j][r+t] = (dp[j][r+t] + cpy[j][r]) % mod;
29                 dp[j+1][r+t] = (dp[j+1][r+t] + cpy[j][r]) % mod;
30                 if(j) dp[j][r+t] = (dp[j][r+t] + cpy[j][r] * j % mod) % mod;
31                 if(j) dp[j-1][r+t] = (dp[j-1][r+t] + cpy[j][r] * j % mod) % mod;
32             }
33         }
34     }
35     LL ans = 0;
36     for(int i = 0; i <= k; i++) ans = (ans + dp[0][i]) % mod;
37     printf("%I64d\n", ans);
38     return 0;
39 }
Aguin

 

第五周 2.14-2.21

标签:

原文地址:http://www.cnblogs.com/Aguin/p/5189402.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!