第五周 2.14-2.21

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五周 2.14-2.21相关的知识,希望对你有一定的参考价值。

汪!汪汪汪!汪汪!(热烈庆祝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的主要内容,如果未能解决你的问题,请参考以下文章

第五周周记

第五周周记

吴恩达 MachineLearning 第五周课后练习代码

第五周总结

第五周作业

第五周进度条