求调
查看原帖
求调
1359837
Dream_Stars楼主2024/11/29 20:27

rt。

# include <bits/stdc++.h>

# define int long long

using namespace std;

const int N = 5005;
int n ,h ,delta ,ans ,t[N][N] ,num[N][N] ,f[N][N] ,mx[N] ,mx_high[N];

signed main(){
  cin >> n >> h >> delta;
  for (int i = 1; i <= n ;i ++){
    cin >> t[i][0];
    for (int j = 1 ;j <= t[i][0] ;j ++) cin >> t[i][j] ,num[t[i][j]][i] ++ ,mx_high[i] = max(mx_high[i] ,t[i][j]);
  }
  for (int i = h ;i >= 1; i --){
    for (int j = 1 ;j <= n ;j ++)
      if (num[i][j]){
        if (mx_high[j] == i) f[i][j] = num[i][j];
        else {
          if (num[i + 1][j]) f[i][j] = f[i + 1][j] + num[i][j];
          if (i + delta <= h) f[i][j] = max (f[i][j] ,mx[i + delta] + num[i][j]);
        }
        mx[i] = max (mx[i] ,f[i][j]);
      } ans = max (ans, mx[i]);
  }
  //for (int i = h ; i >= 1 ;i --) {for (int j = 1; j <= n ;j ++) cout << f[i][j] <<' ' ;puts("");}
  cout << ans << endl;
  return 0;
}
2024/11/29 20:27
加载中...