Educational Codeforces Round 26 D (dp好题)
来源:互联网 发布:德州扑克 mac 编辑:程序博客网 时间:2024/05/22 06:22
D. Round Subset
time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output
Let’s call the roundness of the number the number of zeros to which it ends.
You have an array of n numbers. You need to choose a subset of exactly k numbers so that the roundness of the product of the selected numbers will be maximum possible.
Input
The first line contains two integer numbers n and k (1 ≤ n ≤ 200, 1 ≤ k ≤ n).
The second line contains n space-separated integer numbers a1, a2, …, an (1 ≤ ai ≤ 1018).
Output
Print maximal roundness of product of the chosen subset of length k.
Examples
input
3 2
50 4 20
output
3
input
5 3
15 16 3 25 9
output
3
input
3 3
9 77 13
output
0
Note
In the first example there are 3 subsets of 2 numbers. [50, 4] has product 200 with roundness 2, [4, 20] — product 80, roundness 1, [50, 20] — product 1000, roundness 3.
In the second example subset [15, 16, 25] has product 6000, roundness 3.
In the third example all subsets has product with roundness 0.
假设dp[i][j]表示计算到第i个数时因子中总共有j个2和dp[i][j]个5
dp[i+1][j+f]=max(dp[i+1][j+f],dp[i][j]+t);
其中f代表5的个数,t代表2的个数,这里有点控制变量的思想
#include <bits/stdc++.h>#define int long longusing namespace std;int dp[500][6010];int a[234];signed main(){ for(int i=0;i<=254;i++){ for(int j=0;j<=6000;j++){ dp[i][j]=-1; } } dp[0][0]=0; int n,k; scanf("%I64d %I64d",&n,&k); for(int i=0;i<n;i++){ scanf("%I64d",&a[i]); } for(int s=0;s<n;s++){ int g=a[s]; int t=0,f=0; while(g%2==0) g/=2,t++; g=a[s]; while(g%5==0) g/=5,f++; for(int i=k-1;i>=0;i--){ for(int j=0;j<=6000;j++){ if(dp[i][j]!=-1) dp[i+1][j+f]=max(dp[i+1][j+f],dp[i][j]+t); } } } int Max=0; for(int i=0;i<=6000;i++){ Max=max(Max,min(i,dp[k][i])); } cout<<Max<<endl; return 0;}
- Educational Codeforces Round 26 D (dp好题)
- Educational Codeforces Round 26 D
- Educational Codeforces Round 8 D. Magic Numbers(数位dp)
- Educational Codeforces Round 8 D. Magic Numbers (数位DP)
- Educational Codeforces Round 17 D dp
- Educational Codeforces Round 26 D Round Subset
- Educational Codeforces Round 26 D. Round Subset 滚动数组优化DP
- Codeforces Educational Round 2 D题
- Educational Codeforces Round 21 D ( 二分 )
- Educational Codeforces Round 8 D - Magic Numbers 数位DP
- Educational Codeforces Round 31-k叉哈夫曼&优先队列&好题-D. Boxes And Balls
- Codeforces Round #383 (Div. 2)D(dp,好题)
- Educational Codeforces Round 8(D. Magic Numbers(数位DP))
- Educational Codeforces Round 21-D
- Educational Codeforces Round 5 D
- cf Educational Codeforces Round 26 D. Round Subset
- Codeforces-Educational Codeforces Round 32-(A,B,C,D)
- codeforces Educational Codeforces Round 16-E(DP)
- lniux svn清除和重新设置 小知识
- HDU 6503 TrickGCD
- UVA5009 Error Curves三分
- tomcat 性能优化
- POJ2001 Shortest Prefixes 动态字典树实现
- Educational Codeforces Round 26 D (dp好题)
- 【bzoj1078】[SCOI2008]斜堆
- HTTP API 接口安全设计
- 树2——删除节点与求度,高度
- 进程间通信-fifo
- Hibernate中Session与本地线程绑定
- iOS7 巨耗电三大修复方法大公开
- 如何调试Vue项目
- String的compareTo方法的详细说明