zoukankan      html  css  js  c++  java
  • J

     1 /*
     2 n个商店,每个商店的数值是ai,能提升的能力值为ai的二进制形式的结尾0的个数
     3 购买序列的ai必须升序,问顺序访问商店最大提升能力值为多少
     4 动态规划,定义dp[n]为以购买第n个商店的升级为结尾的购买方案的提升最大值
     5 所以dp[0]=0;
     6 dp[i]=max(dp[i],dp[j]+k[i]);
     7 */
     8 #include <bits/stdc++.h>
     9 using namespace std;
    10 int pow2[32];
    11 int dp[110];
    12 void init()
    13 {
    14     pow2[0]=1;
    15     for(int i=1;i<20;i++)
    16         pow2[i]=pow2[i-1]*2;
    17 }
    18 int main()
    19 {
    20     int n;
    21     init();
    22     scanf("%d",&n);
    23     while(n--)
    24     {
    25         memset(dp,0,sizeof(dp));
    26         int m,t[110],k[110];
    27         scanf("%d",&m);
    28         for(int i=0;i<m;i++)
    29         {
    30             scanf("%d",&t[i]);
    31 
    32             for(int j=17;j>=0;j--)
    33                 if(t[i]%pow2[j]==0)
    34                 {
    35                     k[i]=j;
    36                     dp[i]=j;
    37                     break;
    38                 }
    39         }
    40         for(int i=1;i<m;i++)
    41         {
    42             for(int j=0;j<i;j++)
    43                 if(t[i]>t[j])
    44                 dp[i]=max(dp[i],dp[j]+k[i]);
    45         }
    46         int ans=0;
    47         for(int i=0;i<m;i++)
    48             if(ans<dp[i]) ans=dp[i];
    49         printf("%d
    ",ans);
    50     }
    51 }
  • 相关阅读:
    函数的内置方法
    函数
    文件操作
    三元运算
    流程控制
    集合
    div容器内文本对齐--神奇的css
    Struts2的零配置和rest插件
    MIME类型
    ganymed-ssh2使用
  • 原文地址:https://www.cnblogs.com/kearon/p/7215290.html
Copyright © 2011-2022 走看看