BZOJ4524 [Cqoi2016]伪光滑数
BZOJ上的题面很乱,这里有一个题面.
题解:
正解是可持久化可并堆+DP,可惜我不会...
但暴力也可过这道题.
先在不超过N的前提下,在大根堆里加入每个质数的J次方,1<=j,
然后就可以发现,当前的堆里有着不超过N的最大值.
然后每次找到堆顶,用这个数除以一次原来的质数乘上一次比它小的质数,把新数全部加入堆中.
按照这样的方式构造出第K优解.
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<string>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<iomanip>
using namespace std;
#define ll long long
#define db double
#define up(i,j,n) for(ll i=j;i<=n;i++)
#define pii pair<ll,ll>
#define uint unsigned ll
#define FILE "dealing"
ll read(){
ll x=0,f=1,ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return x*f;
}
template<class T> bool cmax(T& a,T b){return a<b?a=b,true:false;}
template<class T> bool cmin(T& a,T b){return a>b?a=b,true:false;}
const ll maxn=10100,limit=128;
ll n,k;
struct node{
ll v;
ll t,pre,p;
node(ll v=0,ll t=0,ll pre=0,ll p=0):v(v),t(t),pre(pre),p(p){}
}temp;
bool operator<(const node& a,const node& b){return a.v<b.v;}
priority_queue<node> q;
bool b[maxn];
ll prime[maxn],tail=0;
void getprime(){
up(i,2,128){
if(!b[i])prime[++tail]=i;
for(ll j=1;j<=tail&&i*prime[j]<=128;j++){
b[i*prime[j]]=1;
if(i%prime[j]==0)break;
}
}
up(i,1,tail){
ll t=1;
up(j,1,128){
if((db)t*prime[i]>n)break;//注意可能爆long long
q.push(node(t*=prime[i],j,i-1,i));
}// data mi pre now
}
}
int main(){
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
n=read(),k=read();
getprime();
while(k--){
temp=q.top();q.pop();
if(temp.t>1){
for(ll i=temp.pre;i>=1;i--){
q.push(node(temp.v/prime[temp.p]*prime[i],temp.t-1,i,temp.p));
}
}
}
printf("%lld\n",temp.v);
return 0;
}
BZOJ4524 [Cqoi2016]伪光滑数的更多相关文章
- BZOJ4524 CQOI2016伪光滑数(堆)
对于每个质数求出其作为最大质因子时最多能有几个质因子,开始时将这些ak1~akmaxk扔进堆.考虑构造方案,使得每次取出最大值后,最大质因子.质因子数均与其相同且恰好比它小的数都在堆里.类似暴搜,对于 ...
- 【BZOJ4524】[Cqoi2016]伪光滑数 堆(模拟搜索)
[BZOJ4524][Cqoi2016]伪光滑数 Description 若一个大于1的整数M的质因数分解有k项,其最大的质因子为Ak,并且满足Ak^K<=N,Ak<128,我们就称整数M ...
- 【BZOJ-4524】伪光滑数 堆 + 贪心 (暴力) [可持久化可并堆 + DP]
4524: [Cqoi2016]伪光滑数 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 183 Solved: 82[Submit][Status] ...
- @bzoj - 4524@ [Cqoi2016]伪光滑数
目录 @description@ @solution@ @version - 1@ @version - 2@ @accepted code@ @version - 1@ @version - 2@ ...
- [bzoj4524] [loj#2047] [Cqoi2016] 伪光滑数
Description 若一个大于 \(1\) 的整数 \(M\) 的质因数分解有 \(k\) 项,其最大的质因子为 \(Ak\) ,并且满足 \(Ak^K \leq N\) , \(Ak<12 ...
- [CQOI2016]伪光滑数
题目描述 若一个大于1的整数M的质因数分解有k项,其最大的质因子为Ak,并且满足Ak^K<=N,Ak<128,我们就称整数M为N-伪 光滑数.现在给出N,求所有整数中,第K大的N-伪光滑数 ...
- Bzoj 4524 [Cqoi2016]伪光滑数(堆)
题面 题解 先筛出$<128$的质数,很少,打个表即可 然后钦定一个质数最大,不断替换即可(丢进大根堆里面,然后取出一个,替换在丢进去即可) 具体来说,设一个四元组$[t,x,y,z]$表示当前 ...
- 2021.08.01 P4359 伪光滑数(二叉堆)
2021.08.01 P4359 伪光滑数(二叉堆) [P4359 CQOI2016]伪光滑数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 若一个大于 11 的整数 MM ...
- Loj 2047 伪光滑数
Loj 2047 伪光滑数 正解较复杂,但这道题其实可以通过暴力解决. 预处理出 \(128\) 内的所有质数,把 \(n\) 内的 \(prime[i]^j\) 丢进堆中,再尝试对每个数变形,除一个 ...
随机推荐
- Linux下不重启永久修改hostname
LINUX下不重启永久修改hostname 1.如果只是修改hostname可以通过如下命令 hostname newHostname 注意:这种修改方式只有当前有效,等服务器重启后hostnam ...
- Spark Streaming的样本demo统计
废话不多说,直接上代码 package com.demo; import java.util.List; import java.util.regex.Pattern; import org.apac ...
- 转:maven2创建一个eclipse工程,设置M2_REPO
from: http://tonychanhoho.iteye.com/blog/1584324 M2_REPO是一个用来定义 maven 2仓库在硬盘中的存储位置,windows默认是C:\User ...
- HTTP错误状态码定位与解决
实践总结 本次基于对500错误定位为例,给大家讲解整个分析过程与解决方法. 1.本次实践为HTTP错误状态码定位提供一个高效.精确的定位方式,不仅仅局限于500错误. 2.针对500错误本身,可以基于 ...
- javascript 匿名函数和模块化
任何变量,函数,数组,对象,只要不在函数内部,都被认为是全局的,这就是说,这个页面上的其它脚本也可以访问它,而且可以覆盖重写它. 解决办法是,把你的变量放在一个匿名函数内部,定义完之后立即调用它.封装 ...
- java:注解(二)
自定义注解 使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节.在定义注解时,不能继承其他的注解或接口.@i ...
- BC 1.2 模式(Battery Charging Specification 1.2)
转自:http://blog.csdn.net/liglei 转自:http://blog.csdn.net/liglei/article/details/22852755 USB BC1.2有以下三 ...
- 用Squid和DNSPod打造自己的CDN详细教程
本篇教程是顺应大家的要求而写.教程内大部分都是奶罩在为VeryCD等大型网站构建CDN时所累积的经验.在一些概念方面可能会有一些错漏,希望 大家指正. 本教程面对的对象是个人站长,所以各方面会力求傻瓜 ...
- mBot试用体验
[Arduino话题] [mBot试用体验]1.mBot开箱体验(部分资料合集)http://bbs.elecfans.com/forum.php?mod=viewthread&tid=532 ...
- rtems 4.11 console驱动 (arm, beagle)
console驱动框架主要文件是 c/src/lib/libbsp/shared/console.c,驱动的入口是 console_initialize()主要作用是初始化BSP提供的全局变量 Con ...