标签:++ namespace 多少 思路 hide and ide info none
是个背包问题,很彻底的背包,故记录一下
题意:X想升级武器,有n个商店,第i个商店提供能量为ai的能量包,当ai可以被2n整除时,武器可以升n级,且X每次购买的能量包所包含的能量必须严格递增。问武器最多能升多少级
没啥特别的思路,就是彻底背包,直接上(抄的)码
1 #include <bits/stdc++.h> 2 using namespace std; 3 int a[110]; 4 int dp[110], w[110]; 5 6 int main() 7 { 8 int t; 9 int n; 10 scanf("%d", &t); 11 while(t--) 12 { 13 scanf("%d", &n); 14 for (int i = 0; i < n;i++) 15 { 16 int tp = 2, cnt = 0; 17 scanf("%d", &a[i]); 18 while(a[i]%tp==0) 19 { 20 tp *= 2; 21 cnt++; 22 } 23 dp[i] = cnt; 24 w[i] = cnt; 25 } 26 for (int i = 0; i < n;i++) 27 for (int j = 0; j < i;j++) 28 if(a[j]<a[i]) 29 dp[i] = max(dp[i], dp[j] + w[i]); 30 int ans = 0; 31 for (int i = 0; i < n;i++) 32 ans = max(ans, dp[i]); 33 cout << ans << endl; 34 } 35 }
标签:++ namespace 多少 思路 hide and ide info none
原文地址:https://www.cnblogs.com/FY050313/p/14763868.html