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;
}

  

最新文章

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

热门文章

  1. Mysql 性能监控及调优
  2. quartz 应用到 spring定时任务 执行两次
  3. Vue 响应式属性
  4. hdu1198Farm Irrigation(dfs找联通)
  5. spring(16)------spring的数据源配置
  6. google 搜索结果在新标签页打开
  7. Winform GridView打印类
  8. iscroll的理解
  9. 基于Repository模式设计项目架构—你可以参考的项目架构设计
  10. Runtime.getRuntime().exec()----记录日志案例