jzoj4010-Philips and Calculator【搜索,dp】
正题
题目链接:https://jzoj.net/senior/#contest/show/3008/2
题目大意
两个数(a,b)(a,b)(a,b),两个操作
- (a,b)−>(a,b+1)(a,b)->(a,b+1)(a,b)−>(a,b+1)
- (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】相关推荐
- [蓝桥杯][算法提高VIP]夺宝奇兵(记忆化搜索||DP)
题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...
- 【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐下象棋(记忆化搜索dp,dfs)
题干: 小乐乐一天天就知道玩,这一天又想玩象棋. 我们都知道马走日. 现在给定一个棋盘,大小是n*m,把棋盘放在第一象限,棋盘的左下角是(0,0),右上角是(n - 1, m - 1); 小乐乐想知道 ...
- UVA10739 String to Palindrome【记忆化搜索+DP】
In this problem you are asked to convert a string into a palindrome with minimum number of operation ...
- BZOJ2246 [SDOI2011]迷宫探险 【记忆化搜索dp + 概率】
题目 输入格式 输出格式 仅包含一个数字,表示在执行最优策略时,人物活着走出迷宫的概率.四舍五入保留3位小数. 输入样例 4 3 3 2 .$. A#B A#C @@@ 143 37 335 85 9 ...
- CF1398D Colored Rectangles (记忆化搜索DP)
数据范围只有200,所以我们可以用O(n3)O(n^3)O(n3)的暴力DP 闫氏DP分析法用着是真的爽 #include<cstdio> #include<algorithm> ...
- BZOJ3769:BST again(记忆化搜索DP)
Description 求有多少棵大小为n的深度为h的二叉树.(树根深度为0:左右子树有别:答案对1000000007取模) Input 第一行一个整数T,表示数据组数. 以下T行,每行2个整数n和h ...
- 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 ...
- POJ1088 滑雪题解+HDU 1078(记忆化搜索DP)
Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...
- 【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 ...
最新文章
- spring bean中scope=prototype“的作用
- UE4学习-场景介绍、基本操作、快捷键
- Terminal中输入一行命令快速移动光标至行首行尾
- 服务器内存延迟,内存带宽、延迟性能测试
- SVN篇:Shell脚本实现SVN启动,停止,重启
- 原来体检报告是这么看的,赶紧收藏!
- 个人价值:个人价值冰山模型
- 微信小程序java python node医疗微服务系统医院预约挂号系统
- Access把每一天的数据累加_SQL 数据库语句大全
- Element el-select 选择器(下拉框)详解
- python学习:break用法详解
- 取消CSDN的手机绑定
- ORA-00821: Specified value of sga_target 980M is too small, needs to be at least 1164M
- 红旗系统是不是linux,红旗linux操作系统是Linux吗?我想学习Linux,已经按完红旗的了、不知道是不是Linux,有没有被红旗改变过。还能按正常的方式学吗?...
- TDOA 定位技术和实际应用简介
- cad计算机系统安装教程视频,CAD怎么在64位电脑上安装教程视频
- 51单片机12864大液晶屏proteus仿真
- 5.从键盘接收一百分制成绩 (0~100)
- SylixOS到底是不是真国产?
- Ubuntu学习(六)Linux安装压缩包版的软件
热门文章
- python导包路径问题_python的导包问题
- c语言不通类型指针转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...
- Java 泛型 泛型的约束与局限性
- linux终端背景透明度设置,Ubuntu Terminal标签背景颜色设置
- es创建索引数量多了好还是少了好_Elasticsearch性能优化总结
- qdialog 只有点击才能获得焦点_4 个突破点,让你的 Banner 点击率提升10倍
- 计算机科普小知识——U盘格式化
- deb包如何改支持12系统_对一个deb包的解压、修改、重新打包全过程方法
- Linux中 安装centos-release-scl 报错No package centos-release-scl available.
- 7-27 家谱处理 (30 分)(详解+map做法)map真香啊