【悬关】
查看原帖
【悬关】
637788
kimi0705楼主2023/7/21 20:38
#include <bits/stdc++.h>
#define mod 1000000007
using namespace std;
const int N = 205, M = 1005;
int n, m, ans;
int arr[N];
int dp[N][N][M];
int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; i++) cin >> arr[i];
  sort(arr + 1, arr + n + 1);
  dp[0][0][0] = 1;
  for (int i = 0; i < n; i++)
    for (int j = 0; j <= n; j++) {
      int t = (arr[i + 1] - arr[i]) * j;
      for (int k = 0; k <= m - t; k++) {
        (dp[i + 1][j][k + t] += (long long)dp[i][j][k] * (j + 1) % mod) %= mod;
        if (j != n) (dp[i + 1][j + 1][k + t] += dp[i][j][k]) %= mod;
        if (j != 0)
          (dp[i + 1][j + 1][k + t] += (long long)dp[i][j][k] * j % mod) %= mod;
      }
    }

  for (int i = 0; i <= m; i++) ans += dp[n][0][i], ans %= mod;
  cout << ans;
}
2023/7/21 20:38
加载中...