POJ 3126 Prime Path 素数筛,bfs
题目: http://poj.org/problem?id=3126
困得不行了,没想到敲完一遍直接就A了,16ms,debug环节都没进行。人品啊。
- #include <stdio.h>
- #include <string.h>
- #include <queue>
- using namespace std;
- bool prime[];
- int vis[];
- int s, t;
- void prime_init()
- {
- memset(prime, , sizeof(prime));
- prime[] = ;
- for(int i = ; i < ; i += )
- prime[i] = ;
- for(int i = ; i < ; i += )
- {
- if(prime[i])
- {
- for(int j = i*i; j < ; j += i+i)
- prime[j] = ;
- }
- }
- }
- queue<int>q;
- void bfs()
- {
- while(!q.empty())q.pop();
- memset(vis, , sizeof(vis));
- q.push(s);
- vis[s] = ;
- while(!q.empty())
- {
- int u = q.front();
- q.pop();
- if(u == t)
- {
- printf("%d\n", vis[u]-);
- return;
- }
- int a = u % ;
- int b = u % - a;
- int c = u % - a - b;
- int d = u - u % ;
- for(int i = u-a; i <= u-a+; i++)
- {
- if(prime[i] && !vis[i])
- {
- q.push(i);
- vis[i] = vis[u] + ;
- }
- }
- for(int i = u-b; i <= u-b+; i += )
- {
- if(prime[i] && !vis[i])
- {
- q.push(i);
- vis[i] = vis[u] + ;
- }
- }
- for(int i = u-c; i <= u-c+; i += )
- {
- if(prime[i] && !vis[i])
- {
- q.push(i);
- vis[i] = vis[u] + ;
- }
- }
- for(int i = u-d+; i <= u-b+; i += )
- {
- if(prime[i] && !vis[i])
- {
- q.push(i);
- vis[i] = vis[u] + ;
- }
- }
- }
- }
- int main()
- {
- prime_init();
- int n;
- scanf("%d", &n);
- while(n--)
- {
- scanf("%d %d", &s, &t);
- bfs();
- }
- return ;
- }
POJ 3126 Prime Path 素数筛,bfs的更多相关文章
- POJ - 3126 Prime Path 素数筛选+BFS
Prime Path The ministers of the cabinet were quite upset by the message from the Chief of Security s ...
- POJ 3126 - Prime Path - [线性筛+BFS]
题目链接:http://poj.org/problem?id=3126 题意: 给定两个四位素数 $a,b$,要求把 $a$ 变换到 $b$.变换的过程每次只能改动一个数,要保证每次变换出来的数都是一 ...
- POJ 3126 Prime Path(素数路径)
POJ 3126 Prime Path(素数路径) Time Limit: 1000MS Memory Limit: 65536K Description - 题目描述 The minister ...
- BFS POJ 3126 Prime Path
题目传送门 /* 题意:从一个数到另外一个数,每次改变一个数字,且每次是素数 BFS:先预处理1000到9999的素数,简单BFS一下.我没输出Impossible都AC,数据有点弱 */ /**** ...
- Prime Path素数筛与BFS动态规划
埃拉托斯特尼筛法(sieve of Eratosthenes ) 是古希腊数学家埃拉托斯特尼发明的计算素数的方法.对于求解不大于n的所有素数,我们先找出sqrt(n)内的所有素数p1到pk,其中k = ...
- 双向广搜 POJ 3126 Prime Path
POJ 3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16204 Accepted ...
- poj 3126 Prime Path bfs
题目链接:http://poj.org/problem?id=3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submi ...
- POJ 3126 Prime Path (bfs+欧拉线性素数筛)
Description The ministers of the cabinet were quite upset by the message from the Chief of Security ...
- POJ 3126 Prime Path (BFS + 素数筛)
链接 : Here! 思路 : 素数表 + BFS, 对于每个数字来说, 有四个替换位置, 每个替换位置有10种方案(对于最高位只有9种), 因此直接用 BFS 搜索目标状态即可. 搜索的空间也不大. ...
随机推荐
- 【C语言】编写一个函数实现n^k,使用递归实现
#include <stdio.h> int fuc(int x,int n) { if(n!=1) return x*fuc(x,n-1); return 1; } int main() ...
- 漏洞大爆光:QQ漏洞、飞秋漏洞、360浏览器劫持…
随着互联网应用的高速发展,信息安全已深入到诸多领域,前段时间发生的"Struts 2"漏洞及"心脏出血"漏洞影响了二亿中国网民的信息安全.原因是程序猿缺少细致的 ...
- 在Linux环境中使用Ext3文件系统
Linux缺省情况下使用的文件系统为Ext2,ext2文件系统的确高效稳定.但是,随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了:其中系统缺省使用的ext2文件系统 ...
- Android(java)学习笔记151: SurfaceView使用
1.SurfaceView简介 在一般的情况下,应用程序的View都是在相同的GUI线程(UI主线程)中绘制的.这个主应用程序线程同时也用来处理所有的用户交互(例如,按钮单击或者文本输入) ...
- 利用java开发一个双击执行的小程序
之前我们利用java写了很多东西,但是好像都没有什么实际意义. 因为有意义桌面小程序怎么都得有个界面,可是界面又不太好搞.或者 了解到这一层的人就少之又少了. 呀,是不是还得开辟一些版面来介绍awt和 ...
- verilog 数组参数
verilog 支持定义数组参数,这样工程很大时,例化模块时可以使代码更简洁:详见实例 module dma_controller #( parameter integer C0_MAX_MIG_BL ...
- spring中@param和mybatis中@param使用区别
spring中@param /** * 查询指定用户和企业关联有没有配置角色 * @param businessId memberId * @return */ int selectRoleCount ...
- Hibernate缓存杂谈
1.什么是缓存? 缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用程序的运行性能.Hibernate在 ...
- aptitude
aptitude比apt-get 要好用.是 Debian 及其衍生系统中功能极其强大的包管理工具.与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些.举例来说,aptitude在 ...
- DDX_Text (MFC)
DDX_Text (MFC) 描述:该DDX_Text功能管理int的转移,UINT,long,DWORD,CString,float, 或 double编辑控件之间的数据在对话框中,表单视图或控制视 ...