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\) 丢进堆中,再尝试对每个数变形,除一个 ...
随机推荐
- Aliyun-CentOS7.3 Init
Aliyun-CentOS7.3 Init 一.概述 查看系统版本 $ cat /etc/redhat-release $ uname -a 修改主机名 $ vi /etc/hostname $ re ...
- 【音乐App】—— Vue-music 项目学习笔记:歌手详情页开发
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 歌曲列表 歌曲播放 一.子 ...
- Mark一下, dp状态转移方程写对,可是写代码都错,poj 1651 poj 1179
dp题: 1.写状态转移方程; 2.考虑初始化边界,有意义的赋定值.还没计算的赋边界值: 3.怎么写代码自底向上计算最优值 今天做了几个基础dp,所有是dp方程写对可是初始化以及计算写错 先是poj ...
- Esper epl语句实验
基础代码见下,下文列举的实验都是在此程序基础上改动. all,snapshot,first String epl = "select * from appTable.win:time(5 s ...
- JAVA Eclipse创建的Android程序如何不显示标题栏
在manifest.xml文件的application节点添加下面一行即可 android:theme="@android:style/Theme.NoTitleBar" 如果要恢 ...
- imagemagick imagick
imagemagick#图像处理软件 安装解压 ./configure make make install imagick#是php图像扩展模块 调用imagemagick处理图像 安装解压/opt/ ...
- eclipse学习
网上转载,以作以后学习之用! eclipse学习 关键字: eclipse学习 1 eclipse插件安装方法(link方法) 一般插件包含一个eclipse目录,其下是features和plugin ...
- IE67实现inline-block布局
inline-block可以定义元素为行内块级元素,即既具有行内元素同占一行的特点,又具有块级元素的box模型.但是IE67和其他浏览器的支持差别比较大: 1.行内元素使用inline-block变成 ...
- 转python版本的curl工具pycurl学习
一 pycurl介绍 pycurl模块为libcurl库提供了一个python接口.libcurl是一个开源免费且方便快捷的基于客户端的url传输库,支持FTP,HTTP,HTTPS,IMAP,IMA ...
- aar格式
aar包是Android Library Project的二进制公布包. 文件的扩展名是aar,并且maven包类型也应该是aar. 只是这文件本身就是一个简单的zip文件.里面有例如以下的内容: / ...