USACO 3.4 Rockers

  1. #include <iostream>
  2. using namespace std;
  3. const int N = 30;
  4. int d[N][N][N];
  5. int n, m, limit;
  6. int tim[N];
  7. int main()
  8. {
  9.     int i, j, k;
  10.     //freopen("rockers.in", "r", stdin);
  11.     //freopen("rockers.out", "w", stdout);
  12.     
  13.     scanf("%d%d%d",&n, &limit, &m);
  14.     for(i = 1; i <= n; i++)
  15.         scanf("%d",&tim[i]);
  16.     int ans = 0;
  17.     for(i = 1; i <= m; i++)
  18.         for(j = 0; j <= limit; j++)
  19.             for(k = 0; k <= n; k++){
  20.                 for(int t = k + 1; t <= n; t++)
  21.                 {
  22.                     if(j + tim[t] <= limit)
  23.                         d[i][j+tim[t]][t] = max(d[i][j][k] + 1 ,d[i][j+tim[t]][t]);
  24.                     
  25.                     else d[i+1][tim[t]][t] = max(d[i+1][tim[t]][t], d[i][j][k] + 1);
  26.                 }
  27.                 ans = max(ans, d[i][j][k]);
  28.             }
  29.             
  30.     printf("%d/n",ans);
  31.     scanf("%d",&n);
  32.     return 0;
  33. }
  34.                         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值