丑数(USACO)
这个题是一个动态规划加优化的经典题
1246 丑数
USACO
题解
对于一给定的素数集合 S = {p1, p2, ..., pK},
来考虑那些质因数全部属于S 的数的集合。这个集合包括,p1, p1p2, p1p1, 和 p1p2p3 (还有其它)。这是个对于一个输入的S的丑数集合。
注意:我们不认为1 是一个丑数。
你的工作是对于输入的集合S去寻找集合中的第N个丑数。longint(signed 32-bit)对于程序是足够的。
第 1 行: 二个被空间分开的整数:K 和 N , 1<= K<=100 , 1<= N<=100,000.
第 2 行: K 个被空间分开的整数:集合S的元素
单独的一行,写上对于输入的S的第N个丑数。
4 19
2 3 5 7
27
- Navigation
- 题库
- 天梯
- 评测
- 题解
- 关于
1246 丑数
USACO
题解
回到问题
超出时间 Time Limit Exceeded
输入数据 (显示前20行)7 28888
2 3 5 11 17 23 31
测试点#1.in 结果:TLE 内存使用量: 492kB 时间使用量: 1000ms
测试点#2.in 结果:TLE 内存使用量: 256kB 时间使用量: 1000ms
测试点#3.in 结果:TLE 内存使用量: 256kB 时间使用量: 1000ms
测试点#4.in 结果:TLE 内存使用量: 256kB 时间使用量: 1000ms
测试点#5.in 结果:TLE 内存使用量: 1000kB 时间使用量: 1000ms
当时tag上打的是堆,然后就一直想啊想怎么用堆去写这个题,结果Tm看题解才发现是一道DP的题。。。。坑死我了。。。。。
思路
1:根据丑数定义,不难递推得到任何一个丑数是由它之前的丑数再×一个原数组的值来;然而。。。。。。。。。。。。。这样还是会超时。。。。。。。。。。。。。。。。。
那就再优化!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2:开辟一个w数组,记录从s[i]这个位置往后*ans[w[i]]才大于之前的ans[pp-1]值,并且这个乘得的值会不断更新ans[pp];再递推下去,每一轮递推都要更新w[i];
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define INF 9999999999
using namespace std;
long long s[101],ans[10000001];
long long w[101];
long long k,n;
int main(){
scanf("%lld%lld",&k,&n);
for(long long i=1;i<=k;++i)scanf("%lld",&s[i]),w[i]=1;
ans[1]=1;
for(long long i=2;i<=n+1;++i){
long long minn=INF;
for(long long j=1;j<=k;++j){
while(ans[w[j]]*s[j]<=ans[i-1])w[j]++;
minn=min(minn,ans[w[j]]*s[j]);
}
ans[i]=minn;
}
printf("%lld",ans[n+1]);
return 0;
}
丑数(USACO)的更多相关文章
- AC日记——丑数 codevs 1246
1246 丑数 USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 对于一给定的素 ...
- 插入排序的优化非希尔【不靠谱地讲可以优化到O(nlogn)】 USACO 丑数
首先我们先介绍一下普通的插排,就是我们现在一般写的那种,效率是O(n^2)的. 普通的插排基于的思想就是找位置,然后插入进去,其他在它后面的元素全部后移,下面是普通插排的代码: #include< ...
- 【USACO 3.1.3】丑数
[描述] 对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于S 的数的集合.这个集合包括,p1, p1p2, p1p1, 和 p1p2p3 (还有其它).这是 ...
- 洛谷P2723 丑数 Humble Numbers
P2723 丑数 Humble Numbers 52通过 138提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交 讨论 题解 最新讨论 暂时没有讨论 题目背景 对于一给定的素数 ...
- Luogu2723丑数Humble Numbers【归并排序】
Luogu2723丑数Humble Numbers 题目背景 对于一给定的素数集合 S = {p1, p2, ..., pK},考虑一个正整数集合,该集合中任一元素的质因数全部属于S.这个正整数集合包 ...
- 洛谷P2723 丑数 Humble Numbers [2017年 6月计划 数论07]
P2723 丑数 Humble Numbers 题目背景 对于一给定的素数集合 S = {p1, p2, ..., pK},考虑一个正整数集合,该集合中任一元素的质因数全部属于S.这个正整数集合包括, ...
- 剑指Offer面试题:29.丑数
一.题目:丑数 题目:我们把只包含因子2.3和5的数称作丑数(Ugly Number).求按从小到大的顺序的第1500个丑数.例如6.8都是丑数,但14不是,因为它包含因子7.习惯上我们把1当做第一个 ...
- 剑指Offer:面试题34——丑数(java实现)
问题描述: 把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 思路1: ...
- UVA136 求第1500个丑数
枚举大范围数据..暴力检查题目条件 #include <iostream> #include <cstdio> #include <vector> #include ...
随机推荐
- MyBatis 源码分析——介绍
笔者第一次接触跟MyBatis框架是在2009年未的时候.不过那个时候的他并不叫MyBatis,而是叫IBatis.2010年的时候改为现在的名字--MyBatis.这几年过去了,对于笔者来讲有一点陌 ...
- Spark:使用Spark Shell的两个示例
Spark:使用Spark Shell的两个示例 Python 行数统计 ** 注意: **使用的是Hadoop的HDFS作为持久层,需要先配置Hadoop 命令行代码 # pyspark >& ...
- Angular企业级开发(6)-使用Gulp构建和打包前端项目
1.gulp介绍 基于流的前端自动化构建工具,利用gulp可以提高前端开发效率,特别是在前后端分离的项目中.使用gulp能完成以下任务: 压缩html.css和js 编译less或sass等 压缩图片 ...
- 内功心法 -- Java中的深拷贝和浅拷贝
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------这篇博客主要来谈谈" ...
- oracle_用户与概要文件
Oracle 用户与概要文件 2012-09-01 15:05:47| 分类: Oracle | 标签:用户与概要文件 |举报 |字号大中小 订阅 用户管理看上去简单其实也是最常出现问题的一个 ...
- java_web总结(一)
1.struts1ajax返回值 public ActionForward preChangeAccountPwd(ActionMapping mapping, ActionForm form, Ht ...
- Webappbuilder自定义widget模板
Webappbuilder自定义widget模板 by 李远祥 到\\widgets\samplewidgets目录下拷贝 CustomWidgetTemplate 文件并重命名为MyWidget 设 ...
- linux gdb基本概念
GDB是一个功能强大的调试器,它是一个自由软件,能够用在许多UNIX平台上.它同时也是Linux系统中的默认调试器.GDB已被移植到许多其他的计算机平台上,并且能够用于调试嵌入式实时系统.一般来说,G ...
- IP数据报格式 及路由转发算法
ip数据报分首部和数据两部分组成: 首部分为固定部分和可变部分 版本--占 4 位,指 IP 协议的版本 目前的 IP 协议版本号为 4 (即 IPv4) 首部长度--占 4 位,可表示的最大数值 是 ...
- 细说Asp.Net WebAPI消息处理管道
我们在开发完Asp.Net WebAPI程序后,可以使用WebHost寄宿方式或者SelfHost寄宿方式来部署Asp.Net WebAPI.所谓WebHost寄宿就是通过Asp.Net来实现:所谓S ...