【BZOJ 3233】 [Ahoi2013]找硬币
来源:互联网 发布:丽水办公助手软件 编辑:程序博客网 时间:2024/05/16 11:35
3233: [Ahoi2013]找硬币
Time Limit: 10 Sec Memory Limit: 64 MB
Submit: 486 Solved: 198
[Submit][Status][Discuss]
Description
小蛇是金融部部长。最近她决定制造一系列新的货币。假设她要制造的货币的面值为x1,x2,x3… 那么x1必须为1,xb必须为xa的正整数倍(b>a)。例如 1,5,125,250就是一组合法的硬币序列,而1,5,100,125就不是。不知从哪一天开始,可爱的蛇爱上了一种萌物——兔纸!从此,小蛇便走上了遇上兔纸娃娃就买的不归路。某天,小蛇看到了N只可爱的兔纸,假设这N 只兔纸的价钱分别是a1,a2…aN。现在小蛇想知道,在哪一组合法的硬币序列下,买这N只兔纸所需要的硬币数最少。买兔纸时不能找零。
Input
第一行,一个整数N,表示兔纸的个数
第二行,N个用空格隔开的整数,分别为N只兔纸的价钱
Output
一行,一个整数,表示最少付的钱币数。
Sample Input
2
25 102
Sample Output
4
样例解释:共有两只兔纸,价钱分别为25和102。现在小蛇构造1,25,100这样一组硬币序列,那么付第一只兔纸只需要一个面值为25的硬币,第二只兔纸需要一个面值为100的硬币和两个面值为1的硬币,总共两只兔纸需要付4个硬币。这也是所有方案中最少所需要付的硬币数。
1<=N<=50, 1<=ai<=100,000
dp好题。
意思是原来价值为
直接这样做是
其实我们可以发现
#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <cmath>#include <cstdlib>using namespace std;int cnt=0,v[100005],n,a[55],f[100005],p[100005];void Prepare(){ for (int i=2;i<=100000;i++) if (!v[i]) { p[++cnt]=i; for (int j=i*2;j<=100000;j+=i) v[j]=1; }}int main(){ Prepare(); scanf("%d",&n); int m=0,tot=0; for (int i=1;i<=n;i++) scanf("%d",&a[i]),tot+=a[i],m=max(a[i],m); f[1]=tot; int ans=tot; for (int i=2;i<=m;i++) { int x=i; f[i]=tot+10; for (int j=1;j<=cnt;j++) if (x%p[j]==0) { int s=i/p[j]; int now=f[s]; for (int k=1;k<=n;k++) now-=(a[k]/i)*(i/s-1); f[i]=min(f[i],now); while (x%p[j]==0) x/=p[j]; if (x==1) break; } ans=min(ans,f[i]); } cout<<ans<<endl; return 0;}
- 【BZOJ 3233】 [Ahoi2013]找硬币
- bzoj 3233: [Ahoi2013]找硬币
- BZOJ 3233 Ahoi2013 找硬币 动态规划
- BZOJ 3233: [Ahoi2013]找硬币|动态规划
- bzoj 3233: [Ahoi2013]找硬币 动态规划
- 3233: [Ahoi2013]找硬币
- 3233: [Ahoi2013]找硬币 线性筛+DP
- bzoj3233 [Ahoi2013]找硬币
- BZOJ3233 [Ahoi2013]找硬币(线性筛+dp)
- BZOJ - 3233 找硬币(贪心+动态规划)
- bzoj 1411: [ZJOI2009]硬币游戏 找规律
- bzoj 3236: [Ahoi2013]作业
- 【BZOJ 3238】 [Ahoi2013]差异
- 【BZOJ 3236】 [Ahoi2013]作业
- bzoj 3238: [Ahoi2013]差异
- bzoj 3236: [Ahoi2013]作业
- BZOJ 3238 [Ahoi2013]差异
- bzoj 3238 [Ahoi2013]差异
- android 获取屏幕宽高
- C++ 静态成员和静态成员函数
- 《Scala编程》学习笔记(1~7章)
- ubuntu 下搭建ftp服务
- 2015 CVTE 实习招聘经验谈(广州)
- 【BZOJ 3233】 [Ahoi2013]找硬币
- 【BZOJ 3631】 [JLOI2014]松鼠的新家
- 【BZOJ 2752】 [HAOI2012]高速公路(road)
- 2015.03.29 腾讯实习笔试(回忆版)
- java基础入门-for循环的一些特殊例子
- JS项目之旅第二天
- 【BZOJ 3293】 [Cqoi2011]分金币
- 2015 腾讯实习后台技术岗面经(广州)
- 【BZOJ 3594】 [Scoi2014]方伯伯的玉米田