这个题为什么会放在数据结构啊

首先因为有决策包容性,对于一个n每次必然选择一个n%p最大的p,令n减n%p

设fi表示i变成0的步数的话,同样我们可以知道f是有单调性的

假如fd能转移到fk,首先d一定是某个p的倍数,并且k-d+1<pi才能够转移

对于一个合法的d,它能够影响的长度就是pp,其中pp|d并且在给出的质数中是最大的,设它为s(d)

由于f有单调性,并且决策点影响的是由它开始往后的一段,那么决策也有单调性,假如我们知道了这个就可以O(n)指针扫决策点更新了

考虑如何求s

我们可以线性筛一次数,并把每个数被那个点标记记录下来,记为gi

先把每个给出的质数标记为自己,那么s(i)=max(s(i/gi),s(gi)) 好妙啊!

gb卡我空间

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=1e5+;
const int maxp=1e7+; int n,p[maxn]; int m,q[maxn];
int f[maxp],s[maxp]; int pr,g[maxp];bool v[maxp];
void dddd(int mx)
{
for(int i=;i<=mx;i++)
{
if(v[i]==false)
{
f[++pr]=i;
g[i]=i;
}
for(int j=;j<=pr&&i*f[j]<=mx;j++)
{
v[i*f[j]]=true;
g[i*f[j]]=f[j];
if(i%f[j]==)break;
}
}
} int main()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout); scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d",&p[i]),s[]=max(s[],p[i]);
int mx=;
for(int i=;i<=m;i++)
scanf("%d",&q[i]),mx=max(mx,q[i]); //.....read...... dddd(mx);
s[]=-;
for(int i=;i<=n;i++)s[p[i]]=p[i];
for(int i=;i<=mx;i++)s[i]=max(s[i/g[i]],s[g[i]]); //.....gets...... f[]=;int j=;
for(int i=;i<=mx;i++)
{
while(j<i&&(s[j]==-||f[j]==-||j+s[j]-<i))j++;
if(j==i)f[i]=-;
else f[i]=f[j]+;
} //.....getf..... for(int i=;i<=m;i++)
{
if(f[q[i]]==-)puts("oo");
else printf("%d\n",f[q[i]]);
} //.....print..... return ;
}

最新文章

  1. iOS页面传值方式
  2. loadrunner-增加检查点(web_reg_find)
  3. VB将PDF流写入ACCESS数据库,通过AcroPDF控件读出PDF流之实现
  4. (转)echo和print的区别
  5. UVAlive3713 Astronauts(2-SAT)
  6. java socket报文通信(二)报文的封装
  7. c++到c#数据类型的转换
  8. Andorid时间控件和日期控件
  9. 2017-06-23(chmod whoami chown)
  10. Jmeter(七)_if控制器+循环控制器+计数器控制接口分支
  11. Spring Cloud 组件 —— feign
  12. Linux系统挂载Windows系统下的共享文件
  13. 20175316盛茂淞 2018-2019-2 《Java程序设计》第8周学习总结
  14. 【C++】C++中的数组
  15. Matplotlib中plt.rcParams用法(设置图像细节)
  16. 使用显式的Lock对象取代synchronized关键字进行同步
  17. 使用 scm-manager 搭建 git/svn 代码管理仓库(一)
  18. Mongo Plugin插件(编辑器PyCharm的Mongo插件安装与使用)
  19. 快速切题 poj 2993 Emag eht htiw Em Pleh 模拟 难度:0
  20. 小程序解密 encryptedData 获取 unionID 等信息

热门文章

  1. shell的case脚本的简单入门
  2. 在 Windows 下用 TDM-GCC(MinGW)开发 DLL 涉及到数据同步锁及 DLL 初始化终止化函数的问题
  3. 转:Linux字符编码方式
  4. 局域网Cesium离线影像及瓦片影像地图加载
  5. Android菜单menu控件大全
  6. Camtasia Studio如何添加画中画
  7. mysql 安装与启动
  8. HashMap源代码学习笔记
  9. vue的安装以及语法介绍
  10. quilt - 制作patch的工具