BZOJ4524 [Cqoi2016]伪光滑数
2024-09-29 14:50:29
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;
}
最新文章
- Mysql中使用find_in_set函数查找字符串
- apple mobile device服务无法启动,错误1053 解决
- [BZOJ1061][Noi2008]志愿者招募
- ASP.NET MVC5 入门
- C# DataTable去除重复,极其简便、简单
- Wamp集成环境安装
- 《编写可维护的JavaScript》之编程实践
- FPGA 异步时钟处理方
- 【2017-06-27】Js中获取地址栏参数、Js中字符串截取
- apache+php+mysql运行环境
- mui对话框事件
- openlayers4 入门开发系列之地图模态层篇(附源码下载)
- C++编程音视频库ffmpeg的pts时间换算方法
- C# 引用类型公共变量的影响
- js实现双向链表
- Android WebView中软键盘会遮挡输入框相关问题
- html <;table>;标签信息
- 1483. [HNOI2009]梦幻布丁【平衡树-splay】
- Redis学习(5)-Jedis(Java操作redis数据库技术)
- KVC之-setValue:forKey:方法实现原理与验证