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 }
  • 相关阅读:
    day07_final
    day06_final
    day02_final
    day04_final
    New
    AtCoder Grand Contest 015 E Mr.Aoki Incubator
    长链剖分学习笔记
    关于某些莫队的优化
    CodePlus 2019 3月月赛 Div.1 A题 TREE
    边分治学习笔记
  • 原文地址:https://www.cnblogs.com/kearon/p/7215290.html
Copyright © 2011-2022 走看看