做过一大波玄学的搜索剪枝,然后一看n<=50,就想dfs了

然而并不会dfs,剪枝过于玄学,而且似乎不好用

于是弃疗看题解

然后就发现自己zz了

其实本来是知道如果知道最后一个数,就只用枚举最后一个数的倍数就行了

但怎么就没想到dp呢,这dp其实是比较明显的约数dp、

因为3*4一定不会比3*2*2更优,所以直接每次都乘素数去试

用所有约数去更新倍数就好,

那序列前面的数都不知道,怎么知道每个数被前面的数试过之后剩下多少?

这里需要确定,接写来试的都是这个数的倍数,所以剩下的这些数就必须是这个数的倍数,才能保证正确性

状态需要设计的满足递推性而不一定直观

所以直接f【i】表示不用i,用i的约数填满不是i的倍数的方案数;←神(gui)奇(yi)

dp即可、

码:

#include<iostream>
#include<cstdio>
using namespace std;
#define inf 1000000007
#define N 55
#define M 100005
int a[N],su[M],f[M],tot,ans,n,m;
bool he[M];
int work(int x,int y)
{int ans=0,i;for(i=1;i<=n;i++)ans+=a[i]%y/x;return ans;
}
int main()
{int i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
m=max(m,a[i]);
}   for(i=2;i<=m;i++){if(!he[i]){su[++tot]=i;}for(j=1;j<=tot&&su[j]*i<=tot;j++){he[i*su[j]]=1;if(i%su[j]==0)break;          }}for(i=2;i<=m;i++)f[i]=inf;ans=inf;
for(i=1;i<=m;i++)
{ans=min(ans,f[i]+work(i,inf));
for(j=1;j<=tot&&i*su[j]<=m;j++)
{
int k=i*su[j];
f[k]=min(f[k],f[i]+work(i,k));
}
}       printf("%d",ans);}  

2017.9.13 找硬币 失败总结相关推荐

  1. 2017.9.7 翻硬币 失败总结

    这个题就是告诉你.越无从下手的题,越是数学和结论题. 这题搞了一下午+一晚上的时间,却连第一步都没想到. 因为这个题它每一个决策对其他点影响很大,所以直接从决策下手去讨论就显得非常有后效性.. 所以我 ...

  2. 【第五组】头脑风暴+核心竞争力+NABCD+个人(用例+功能+技术说明书) 最后修改时间 2017.07.13...

    2017.07.13版 因为对之前版本做了较多修改,所以重新发了,并且在博客下方保留原有版本作为记录. 头脑风暴结果: 刚开始我们无法确定要做一个什么样的应用程序,总结之前可视化课程的作业,我们提出了 ...

  3. macOS 10.13 安装Virtualbox失败

    macOS 10.13 安装Virtualbox失败 Enviroment macOS: 10.13 High Sierra virtualBox: 5.1.28 Problem descriptio ...

  4. 解决高通 Android 12/13 ota升级失败问题

    1. Android adb push ota全量包 如下图所示 2.当前设备是a分区 如下图所示 3.adb root ->adb enable-verity->adb reboot  ...

  5. Xamarin 2017.9.13发布更新

     Xamarin 2017.9.13发布更新 Visual Studio 2017更新到15.3.4.其中,Xamarin.Visual更新到4.6.3.4;Xamarin.iOS更新到10.12.3 ...

  6. 13. 找出数组中重复的数字【难度: 简单 / 知识点: 模拟】

    13. 找出数组中重复的数字[难度: 简单 / 知识点: 模拟] 方法一: map 计数 时间复杂度O(nlongn) 空间复杂度多了一个二叉树 class Solution {public:int ...

  7. eclipse软件有时会退出弹出一串错误弹框_修复iPhone上的iOS 13软件更新失败错误...

    如果由于"软件更新失败:下载iOS 13时发生错误"错误而无法安装刚刚发布的用于检查新的暗模式功能的iOS 13更新,那么我可以理解这种挫败感.但幸运的是,有些解决方案可以尝试修复 ...

  8. easyUI datebox 日期空间斜杠格式化。例如将日期空间中显示2017-03-13,改为2017/03/13...

    easyUI datebox 日期空间斜杠格式化 将日期空间中显示2017-03-13,改为2017/03/13 //日期控件斜杠格式化 function formatDate(date){if( & ...

  9. 假定有5角、1角、5分、2分和1分共5种硬币,在给顾客找硬币时,一般都会尽可能地选用硬币个数最小的方法

    [题目描述] 假定有5角.1角.5分.2分和1分共5种硬币,在给顾客找硬币时,一般都会尽可能地选用硬币个数最小的方法.例如,当要给某顾客找7角2分钱时,会给他一个5角,2个1角和1个2分的硬币. [输 ...

最新文章

  1. 【原创】强化学习精选资料汇总:从入门到精通,看完这些干货就够啦!
  2. 一个流畅的iOS图表框架PNChart
  3. selenium 浏览器driver地址
  4. innerHTML与innerText
  5. opengl动画_物理动画流体实现流程(Physically Based Fluid Animation)
  6. connectionString加密
  7. 继续分享 5 个实用的 vs 调试技巧
  8. 《Visual Studio.NET Tips and Tricks》第一章的翻译
  9. JS对象 颠倒数组元素顺序reverse() reverse() 方法用于颠倒数组中元素的顺序。
  10. PHP array(递归)转xml,xml转array
  11. 2015年3月计算机二级vb题库,2015年计算机二级vb机试试题
  12. Listary——好用到哭的高效快速搜索工具
  13. 【多模态】《Visual7W: Grounded Question Answering in Images》论文阅读笔记
  14. 使用echart的小指南
  15. 什么牌子蓝牙耳机通话质量好?通话质量好的蓝牙耳机推荐
  16. WIN10管理员权限设置、更改用户名被“拒绝访问”
  17. python3的numpy包中的numpy.logspace解析
  18. Win11 解决 资源管理器和右键问题
  19. 小米电视 android版本升级,小米电视2系统版本多久更新一次
  20. 如何(c++,js)写一个传统的K线图和走势图5 - 移动筹码图

热门文章

  1. opengl学习笔记(四)
  2. dataframe格式的数据处理
  3. 还你一个干净清爽的Windows系统--win7重装小记
  4. 机器学习的MLE和MAP:最大似然估计和最大后验估计
  5. LeetCode-438. 找到字符串中所有字母异位词
  6. LeetCode-20:有效的括号
  7. hypertrm超级终端_win7电脑怎么添加windows超级终端
  8. 我该学习哪个人工智能系统
  9. 五大领域总目标指南_幼儿教师这样读《指南》事半功倍
  10. 大学计算机专业绩点3.7什么水平,大学绩点3.0什么水平 大学里的绩点有什么用...