CodeForces 837D - Round Subset | Educational Codeforces Round 26
2024-10-20 12:06:12
/*
CodeForces 837D - Round Subset [ DP ] | Educational Codeforces Round 26
题意:
选k个数相乘让末尾0最多
分析:
第i个数字有a[i]个2, b[i] 个5
以其中一维作体积另一维作价值01背包即可
*/
#include <bits/stdc++.h>
using namespace std;
int dp[205][20005];
int get2(long long x)
{
int s = 0;
while (x % 2 == 0) s++, x /= 2;
return s;
}
int get5(long long x)
{
int s = 0;
while (x % 5 == 0) s++, x /= 5;
return s;
}
int n, k;
int main()
{
scanf("%d%d", &n, &k);
memset(dp, -1, sizeof(dp));
dp[0][0] = 0;
for (int i = 1; i <= n; i++)
{
long long x; scanf("%lld", &x);
int a = get2(x);
int b = get5(x);
for (int j = k; j >= 1; j--)
for (int p = a; p <= 20000; p++)
if (dp[j-1][p-a] != -1)
dp[j][p] = max(dp[j][p], dp[j-1][p-a] + b);
}
int ans = 0;
for (int i = 1; i <= 20000; i++)
if (dp[k][i] != -1)
ans = max(ans, min(i, dp[k][i]));
printf("%d\n", ans);
}
最新文章
- [c++] Pieces of knowledge
- java 用 jxl poi 进行excel 解析 *** 最爱那水货
- 文件I/O之fcntl函数
- Dremel made simple with Parquet
- openldap---ldapsearch使用
- 7.MyBatis延时加载
- Redis Cluster部署、管理和测试
- 软硬件协同编程 - C#玩转CPU高速缓存(附示例)
- 【BZOJ3997】[TJOI2015]组合数学(动态规划)
- vue开发常用配置
- java的this关键字理解
- Nancy in .Net Core学习笔记 - 初识Nancy
- 【学习笔记】tensorflow队列和线程
- c/c++ linux 进程间通信系列6,使用消息队列(message queue)
- windows下qt的.exe的dll文件怎么配齐
- 脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?
- python测试开发django-23.admin列表页优化和排序
- 目前主流的MQ
- java 数字转换成字符串
- 移动端混合开发----ionic