2017.9.13 找硬币 失败总结
做过一大波玄学的搜索剪枝,然后一看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 找硬币 失败总结相关推荐
- 2017.9.7 翻硬币 失败总结
这个题就是告诉你.越无从下手的题,越是数学和结论题. 这题搞了一下午+一晚上的时间,却连第一步都没想到. 因为这个题它每一个决策对其他点影响很大,所以直接从决策下手去讨论就显得非常有后效性.. 所以我 ...
- 【第五组】头脑风暴+核心竞争力+NABCD+个人(用例+功能+技术说明书) 最后修改时间 2017.07.13...
2017.07.13版 因为对之前版本做了较多修改,所以重新发了,并且在博客下方保留原有版本作为记录. 头脑风暴结果: 刚开始我们无法确定要做一个什么样的应用程序,总结之前可视化课程的作业,我们提出了 ...
- macOS 10.13 安装Virtualbox失败
macOS 10.13 安装Virtualbox失败 Enviroment macOS: 10.13 High Sierra virtualBox: 5.1.28 Problem descriptio ...
- 解决高通 Android 12/13 ota升级失败问题
1. Android adb push ota全量包 如下图所示 2.当前设备是a分区 如下图所示 3.adb root ->adb enable-verity->adb reboot ...
- 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 ...
- 13. 找出数组中重复的数字【难度: 简单 / 知识点: 模拟】
13. 找出数组中重复的数字[难度: 简单 / 知识点: 模拟] 方法一: map 计数 时间复杂度O(nlongn) 空间复杂度多了一个二叉树 class Solution {public:int ...
- eclipse软件有时会退出弹出一串错误弹框_修复iPhone上的iOS 13软件更新失败错误...
如果由于"软件更新失败:下载iOS 13时发生错误"错误而无法安装刚刚发布的用于检查新的暗模式功能的iOS 13更新,那么我可以理解这种挫败感.但幸运的是,有些解决方案可以尝试修复 ...
- easyUI datebox 日期空间斜杠格式化。例如将日期空间中显示2017-03-13,改为2017/03/13...
easyUI datebox 日期空间斜杠格式化 将日期空间中显示2017-03-13,改为2017/03/13 //日期控件斜杠格式化 function formatDate(date){if( & ...
- 假定有5角、1角、5分、2分和1分共5种硬币,在给顾客找硬币时,一般都会尽可能地选用硬币个数最小的方法
[题目描述] 假定有5角.1角.5分.2分和1分共5种硬币,在给顾客找硬币时,一般都会尽可能地选用硬币个数最小的方法.例如,当要给某顾客找7角2分钱时,会给他一个5角,2个1角和1个2分的硬币. [输 ...
最新文章
- 【原创】强化学习精选资料汇总:从入门到精通,看完这些干货就够啦!
- 一个流畅的iOS图表框架PNChart
- selenium 浏览器driver地址
- innerHTML与innerText
- opengl动画_物理动画流体实现流程(Physically Based Fluid Animation)
- connectionString加密
- 继续分享 5 个实用的 vs 调试技巧
- 《Visual Studio.NET Tips and Tricks》第一章的翻译
- JS对象 颠倒数组元素顺序reverse() reverse() 方法用于颠倒数组中元素的顺序。
- PHP array(递归)转xml,xml转array
- 2015年3月计算机二级vb题库,2015年计算机二级vb机试试题
- Listary——好用到哭的高效快速搜索工具
- 【多模态】《Visual7W: Grounded Question Answering in Images》论文阅读笔记
- 使用echart的小指南
- 什么牌子蓝牙耳机通话质量好?通话质量好的蓝牙耳机推荐
- WIN10管理员权限设置、更改用户名被“拒绝访问”
- python3的numpy包中的numpy.logspace解析
- Win11 解决 资源管理器和右键问题
- 小米电视 android版本升级,小米电视2系统版本多久更新一次
- 如何(c++,js)写一个传统的K线图和走势图5 - 移动筹码图
热门文章
- opengl学习笔记(四)
- dataframe格式的数据处理
- 还你一个干净清爽的Windows系统--win7重装小记
- 机器学习的MLE和MAP:最大似然估计和最大后验估计
- LeetCode-438. 找到字符串中所有字母异位词
- LeetCode-20:有效的括号
- hypertrm超级终端_win7电脑怎么添加windows超级终端
- 我该学习哪个人工智能系统
- 五大领域总目标指南_幼儿教师这样读《指南》事半功倍
- 大学计算机专业绩点3.7什么水平,大学绩点3.0什么水平 大学里的绩点有什么用...