正题

题目链接:https://jzoj.net/senior/#contest/show/3008/2


题目大意

两个数(a,b)(a,b)(a,b),两个操作

  1. (a,b)−>(a,b+1)(a,b)->(a,b+1)(a,b)−>(a,b+1)
  2. (a,b)−>(a∗b,b)(a,b)->(a*b,b)(a,b)−>(a∗b,b)

求ppp步以内aaa能到达[l,r][l,r][l,r]之间的多少个数


解题思路

到达xxx的最小步骤就是将xxx分解乘若干个数的乘积,使得最大数+数的个数最小。

首先答案肯定是能被1∼p1\sim ~ p1∼ p之间的质数的乘积表示出来的,发现这些数并不多,可以用dfsdfsdfs搜索出来并排序。

然后dpdpdp,fif_{i}fi​表示到达aia_iai​的最少操作222,然后枚举操作111的数量进行转移,也就是枚举最大数jjj,找到一个ak∗j=aia_k*j=a_iak​∗j=ai​

然后有转移fi=min{fi,fk+1}f_{i}=min\{f_i,f_k+1\}fi​=min{fi​,fk​+1}

时间复杂度O(3∗106∗n)O(3*10^6*n)O(3∗106∗n)


codecodecode

#pragma GCC optimize(2)
%:pragma GCC optimize(3)
%:pragma GCC optimize("Ofast")
%:pragma GCC optimize("inline")
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=3e6+10;
int pri[25]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
int l,r,P,maxx,ans,a[N],f[N],cnt,z;
bool v[N];
void dfs(int x,int k){a[++cnt]=x;for(int i=k;i<=z;i++){if((long long)x*pri[i]>r) return;dfs(x*pri[i],i);}
}
int main()
{scanf("%d%d%d",&l,&r,&P);while(z<24&&pri[z+1]<=P)z++;dfs(1,0);sort(a+1,a+1+cnt);memset(f,0x3f,sizeof(f));f[1]=0;for(int i=2;i<P;i++){int z=0;for(int j=1;j<=cnt;j++){while(a[z]*i<a[j])z++;if(a[z]*i==a[j])f[j]=min(f[j],f[z]+1);if(i+f[j]<=P)v[j]=1;}}for(int i=cnt;i>=1;i--){if(a[i]<l) break;if(v[i])ans++;}printf("%d",ans);
}

jzoj4010-Philips and Calculator【搜索,dp】相关推荐

  1. [蓝桥杯][算法提高VIP]夺宝奇兵(记忆化搜索||DP)

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  2. 【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐下象棋(记忆化搜索dp,dfs)

    题干: 小乐乐一天天就知道玩,这一天又想玩象棋. 我们都知道马走日. 现在给定一个棋盘,大小是n*m,把棋盘放在第一象限,棋盘的左下角是(0,0),右上角是(n - 1, m - 1); 小乐乐想知道 ...

  3. UVA10739 String to Palindrome【记忆化搜索+DP】

    In this problem you are asked to convert a string into a palindrome with minimum number of operation ...

  4. BZOJ2246 [SDOI2011]迷宫探险 【记忆化搜索dp + 概率】

    题目 输入格式 输出格式 仅包含一个数字,表示在执行最优策略时,人物活着走出迷宫的概率.四舍五入保留3位小数. 输入样例 4 3 3 2 .$. A#B A#C @@@ 143 37 335 85 9 ...

  5. CF1398D Colored Rectangles (记忆化搜索DP)

    数据范围只有200,所以我们可以用O(n3)O(n^3)O(n3)的暴力DP 闫氏DP分析法用着是真的爽 #include<cstdio> #include<algorithm> ...

  6. BZOJ3769:BST again(记忆化搜索DP)

    Description 求有多少棵大小为n的深度为h的二叉树.(树根深度为0:左右子树有别:答案对1000000007取模) Input 第一行一个整数T,表示数据组数. 以下T行,每行2个整数n和h ...

  7. NYOJ 679 The Weight of Tree 搜索+dp+邻接表

    The Weight of Tree 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 456 has a tree of n nodes, each node is as ...

  8. POJ1088 滑雪题解+HDU 1078(记忆化搜索DP)

    Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...

  9. 【HDU - 1078】FatMouse and Cheese (记忆化搜索dp)

    题干: FatMouse has stored some cheese in a city. The city can be considered as a square grid of dimens ...

最新文章

  1. spring bean中scope=prototype“的作用
  2. UE4学习-场景介绍、基本操作、快捷键
  3. Terminal中输入一行命令快速移动光标至行首行尾
  4. 服务器内存延迟,内存带宽、延迟性能测试
  5. SVN篇:Shell脚本实现SVN启动,停止,重启
  6. 原来体检报告是这么看的,赶紧收藏!
  7. 个人价值:个人价值冰山模型
  8. 微信小程序java python node医疗微服务系统医院预约挂号系统
  9. Access把每一天的数据累加_SQL 数据库语句大全
  10. Element el-select 选择器(下拉框)详解
  11. python学习:break用法详解
  12. 取消CSDN的手机绑定
  13. ORA-00821: Specified value of sga_target 980M is too small, needs to be at least 1164M
  14. 红旗系统是不是linux,红旗linux操作系统是Linux吗?我想学习Linux,已经按完红旗的了、不知道是不是Linux,有没有被红旗改变过。还能按正常的方式学吗?...
  15. TDOA 定位技术和实际应用简介
  16. cad计算机系统安装教程视频,CAD怎么在64位电脑上安装教程视频
  17. 51单片机12864大液晶屏proteus仿真
  18. 5.从键盘接收一百分制成绩 (0~100)
  19. SylixOS到底是不是真国产?
  20. Ubuntu学习(六)Linux安装压缩包版的软件

热门文章

  1. python导包路径问题_python的导包问题
  2. c语言不通类型指针转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...
  3. Java 泛型 泛型的约束与局限性
  4. linux终端背景透明度设置,Ubuntu Terminal标签背景颜色设置
  5. es创建索引数量多了好还是少了好_Elasticsearch性能优化总结
  6. qdialog 只有点击才能获得焦点_4 个突破点,让你的 Banner 点击率提升10倍
  7. 计算机科普小知识——U盘格式化
  8. deb包如何改支持12系统_对一个deb包的解压、修改、重新打包全过程方法
  9. Linux中 安装centos-release-scl 报错No package centos-release-scl available.
  10. 7-27 家谱处理 (30 分)(详解+map做法)map真香啊