zoukankan      html  css  js  c++  java
  • Day9

    Description

    有两棵APP树,编号为1,2.每一秒,这两棵APP树中的其中一棵会掉一个APP.每一秒,你可以选择在当前APP树下接APP,或者迅速移动到另外一棵APP树下接APP(移动时间可以忽略不计),但由于却乏锻炼,你最多移动W次.问在T秒内,你最多能收集多少个APP.假设你开始站在1号APP树下.

    Input

    第1行:两个整数T(1 < = T< = 1000)和W(1 < = W< = 30)
    第2..T+1行:1或2,代表每分钟掉落APP的那棵树的编号

    Output

    一行一个整数,代表你移动不超过W次能接住的最大APP数

    Sample Input

    7 2
    2
    1
    1
    2
    2
    1
    1

    Sample Output

    6

    思路:简单的dp,设状态转移为dp[i][j],第i秒,移动了j次,能抓住的APP为dp[i][j],对于每次j,有两种状态:苹果在该位置,苹果不在该位置,若苹果在该位置,dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+1,若苹果不在该位置,dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]),再使用滚动数组压缩即可
    int dp[35];
    
    int main() {
        ios::sync_with_stdio(false), cin.tie(0);
        int T, W, val;
        cin >> T >> W;
        for(int i = 1; i <= T; ++i) {
            cin >> val;
            for(int j = W; j >= 0; --j) {
                if((j+1)%2 == (val%2)) dp[j] = max(dp[j], dp[j-1]) +1;
                else dp[j] = max(dp[j], dp[j-1]);
            }
        }
        int ans = 0;
        for(int i = 0; i <= W; ++i)
            ans = max(ans, dp[i]);
        cout << ans << "
    ";
        return 0;
    }
    View Code
    
    
  • 相关阅读:
    WIndows下编译libexif-0.6.21,生成VS下可用的dll和lib
    Android开发之获取系统12/24小时制的时间
    转自 x_x的百度空间
    BZOJ1483: [HNOI2009]梦幻布丁
    BZOJ2124: 等差子序列
    BZOJ2431: [HAOI2009]逆序对数列
    BZOJ1831: [AHOI2008]逆序对
    2821: 作诗(Poetize)
    BZOJ2038小Z的袜子(hose)
    NOI2005维护数列
  • 原文地址:https://www.cnblogs.com/GRedComeT/p/12235912.html
Copyright © 2011-2022 走看看