BZOJ上的题面很乱,这里有一个题面.

题解:

正解是可持久化可并堆+DP,可惜我不会...

但暴力也可过这道题.

先在不超过N的前提下,在大根堆里加入每个质数的J次方,1<=j,

然后就可以发现,当前的堆里有着不超过N的最大值.

然后每次找到堆顶,用这个数除以一次原来的质数乘上一次比它小的质数,把新数全部加入堆中.

按照这样的方式构造出第K优解.

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cstdlib>
  5. #include<string>
  6. #include<cmath>
  7. #include<ctime>
  8. #include<algorithm>
  9. #include<map>
  10. #include<set>
  11. #include<queue>
  12. #include<iomanip>
  13. using namespace std;
  14. #define ll long long
  15. #define db double
  16. #define up(i,j,n) for(ll i=j;i<=n;i++)
  17. #define pii pair<ll,ll>
  18. #define uint unsigned ll
  19. #define FILE "dealing"
  20. ll read(){
  21. ll x=0,f=1,ch=getchar();
  22. while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
  23. while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
  24. return x*f;
  25. }
  26. template<class T> bool cmax(T& a,T b){return a<b?a=b,true:false;}
  27. template<class T> bool cmin(T& a,T b){return a>b?a=b,true:false;}
  28. const ll maxn=10100,limit=128;
  29. ll n,k;
  30. struct node{
  31. ll v;
  32. ll t,pre,p;
  33. node(ll v=0,ll t=0,ll pre=0,ll p=0):v(v),t(t),pre(pre),p(p){}
  34. }temp;
  35. bool operator<(const node& a,const node& b){return a.v<b.v;}
  36. priority_queue<node> q;
  37. bool b[maxn];
  38. ll prime[maxn],tail=0;
  39. void getprime(){
  40. up(i,2,128){
  41. if(!b[i])prime[++tail]=i;
  42. for(ll j=1;j<=tail&&i*prime[j]<=128;j++){
  43. b[i*prime[j]]=1;
  44. if(i%prime[j]==0)break;
  45. }
  46. }
  47. up(i,1,tail){
  48. ll t=1;
  49. up(j,1,128){
  50. if((db)t*prime[i]>n)break;//注意可能爆long long
  51. q.push(node(t*=prime[i],j,i-1,i));
  52. }// data mi pre now
  53. }
  54. }
  55. int main(){
  56. freopen(FILE".in","r",stdin);
  57. freopen(FILE".out","w",stdout);
  58. n=read(),k=read();
  59. getprime();
  60. while(k--){
  61. temp=q.top();q.pop();
  62. if(temp.t>1){
  63. for(ll i=temp.pre;i>=1;i--){
  64. q.push(node(temp.v/prime[temp.p]*prime[i],temp.t-1,i,temp.p));
  65. }
  66. }
  67. }
  68. printf("%lld\n",temp.v);
  69. return 0;
  70. }

  

BZOJ4524 [Cqoi2016]伪光滑数的更多相关文章

  1. BZOJ4524 CQOI2016伪光滑数(堆)

    对于每个质数求出其作为最大质因子时最多能有几个质因子,开始时将这些ak1~akmaxk扔进堆.考虑构造方案,使得每次取出最大值后,最大质因子.质因子数均与其相同且恰好比它小的数都在堆里.类似暴搜,对于 ...

  2. 【BZOJ4524】[Cqoi2016]伪光滑数 堆(模拟搜索)

    [BZOJ4524][Cqoi2016]伪光滑数 Description 若一个大于1的整数M的质因数分解有k项,其最大的质因子为Ak,并且满足Ak^K<=N,Ak<128,我们就称整数M ...

  3. 【BZOJ-4524】伪光滑数 堆 + 贪心 (暴力) [可持久化可并堆 + DP]

    4524: [Cqoi2016]伪光滑数 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 183  Solved: 82[Submit][Status] ...

  4. @bzoj - 4524@ [Cqoi2016]伪光滑数

    目录 @description@ @solution@ @version - 1@ @version - 2@ @accepted code@ @version - 1@ @version - 2@ ...

  5. [bzoj4524] [loj#2047] [Cqoi2016] 伪光滑数

    Description 若一个大于 \(1\) 的整数 \(M\) 的质因数分解有 \(k\) 项,其最大的质因子为 \(Ak\) ,并且满足 \(Ak^K \leq N\) , \(Ak<12 ...

  6. [CQOI2016]伪光滑数

    题目描述 若一个大于1的整数M的质因数分解有k项,其最大的质因子为Ak,并且满足Ak^K<=N,Ak<128,我们就称整数M为N-伪 光滑数.现在给出N,求所有整数中,第K大的N-伪光滑数 ...

  7. Bzoj 4524 [Cqoi2016]伪光滑数(堆)

    题面 题解 先筛出$<128$的质数,很少,打个表即可 然后钦定一个质数最大,不断替换即可(丢进大根堆里面,然后取出一个,替换在丢进去即可) 具体来说,设一个四元组$[t,x,y,z]$表示当前 ...

  8. 2021.08.01 P4359 伪光滑数(二叉堆)

    2021.08.01 P4359 伪光滑数(二叉堆) [P4359 CQOI2016]伪光滑数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 若一个大于 11 的整数 MM ...

  9. Loj 2047 伪光滑数

    Loj 2047 伪光滑数 正解较复杂,但这道题其实可以通过暴力解决. 预处理出 \(128\) 内的所有质数,把 \(n\) 内的 \(prime[i]^j\) 丢进堆中,再尝试对每个数变形,除一个 ...

随机推荐

  1. Aliyun-CentOS7.3 Init

    Aliyun-CentOS7.3 Init 一.概述 查看系统版本 $ cat /etc/redhat-release $ uname -a 修改主机名 $ vi /etc/hostname $ re ...

  2. 【音乐App】—— Vue-music 项目学习笔记:歌手详情页开发

    前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 歌曲列表 歌曲播放 一.子 ...

  3. Mark一下, dp状态转移方程写对,可是写代码都错,poj 1651 poj 1179

    dp题: 1.写状态转移方程; 2.考虑初始化边界,有意义的赋定值.还没计算的赋边界值: 3.怎么写代码自底向上计算最优值 今天做了几个基础dp,所有是dp方程写对可是初始化以及计算写错 先是poj ...

  4. Esper epl语句实验

    基础代码见下,下文列举的实验都是在此程序基础上改动. all,snapshot,first String epl = "select * from appTable.win:time(5 s ...

  5. JAVA Eclipse创建的Android程序如何不显示标题栏

    在manifest.xml文件的application节点添加下面一行即可 android:theme="@android:style/Theme.NoTitleBar" 如果要恢 ...

  6. imagemagick imagick

    imagemagick#图像处理软件 安装解压 ./configure make make install imagick#是php图像扩展模块 调用imagemagick处理图像 安装解压/opt/ ...

  7. eclipse学习

    网上转载,以作以后学习之用! eclipse学习 关键字: eclipse学习 1 eclipse插件安装方法(link方法) 一般插件包含一个eclipse目录,其下是features和plugin ...

  8. IE67实现inline-block布局

    inline-block可以定义元素为行内块级元素,即既具有行内元素同占一行的特点,又具有块级元素的box模型.但是IE67和其他浏览器的支持差别比较大: 1.行内元素使用inline-block变成 ...

  9. 转python版本的curl工具pycurl学习

    一 pycurl介绍 pycurl模块为libcurl库提供了一个python接口.libcurl是一个开源免费且方便快捷的基于客户端的url传输库,支持FTP,HTTP,HTTPS,IMAP,IMA ...

  10. aar格式

    aar包是Android Library Project的二进制公布包. 文件的扩展名是aar,并且maven包类型也应该是aar. 只是这文件本身就是一个简单的zip文件.里面有例如以下的内容: / ...