博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hd 1058 dp
阅读量:4624 次
发布时间:2019-06-09

本文共 918 字,大约阅读时间需要 3 分钟。

呵呵呵,这题的话,去年不知道怎么就水过去了,现在做还是懵逼了

总是感觉这题很奇怪,哎

2,3,5,7的系数必然在已打出的表中取

状态转移方程

dp(n) = min(dp[i]*2,dp[j]*3,dp[k]*5,dp[l]*7)

i<=j<=k<=l<n,

a[4]={2,3,5,7}

用一个一维数组保存下标,cnt[i]记录a[i]所能取得的最大表下标

1.遍历所有的cnt[i]找最小值 

  mmin为dp[cnt[i]*a[i]]中的最小值

2.遍历所有的cnt[i],更新cnt[i]

  if dp[cnt[i]]*a[i]==mmin 

    cnt[i]++;

//5842#include 
#include
#include
#include
#include
#include
using namespace std;const int inf = (1<<31)-1 ;const int MAXN = 6e3;int dp[MAXN];int a[4]={ 2,3,5,7};int ct[4]={ 1,1,1,1};int main(){ int n; int mmin; dp[1] = 1; for(int i=2;i<=5842;i++){ mmin = inf; for(int j=0;j<4;j++){ mmin = min(mmin,a[j]*dp[ct[j]]); } dp[i] = mmin; for(int j=0;j<4;j++){ if(dp[i]==a[j]*dp[ct[j]]) ct[j]++; } } while(scanf("%d",&n),n){ cout<<"The "<
View Code

 

转载于:https://www.cnblogs.com/EdsonLin/p/5361891.html

你可能感兴趣的文章
系统自带的粒子系统
查看>>
Laravel 框架的主要版本
查看>>
pandas学习笔记 - 常见的数据处理方式
查看>>
云监控中的告警
查看>>
大题的简单解答
查看>>
CSS3复选框动画
查看>>
Base64.java 工具类
查看>>
ExtJS遮罩层Ext.loadMask
查看>>
ArcPy开发教程2-管理地图文档1
查看>>
过滤器的使用
查看>>
软件测试
查看>>
Js 提交 form 表单
查看>>
Response.Status http协议状态代码
查看>>
BZOJ4925 城市规划
查看>>
Bootstrap 辅助类
查看>>
[]和{},类的简写
查看>>
二分算法(折半算法)详解
查看>>
掌握 需求过程阅读笔记04
查看>>
JS判断手机浏览器
查看>>
@Autowired和@Resource的区别
查看>>