题目: http://poj.org/problem?id=3126

困得不行了,没想到敲完一遍直接就A了,16ms,debug环节都没进行。人品啊。

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <queue>
  4. using namespace std;
  5.  
  6. bool prime[];
  7. int vis[];
  8. int s, t;
  9.  
  10. void prime_init()
  11. {
  12. memset(prime, , sizeof(prime));
  13. prime[] = ;
  14. for(int i = ; i < ; i += )
  15. prime[i] = ;
  16. for(int i = ; i < ; i += )
  17. {
  18. if(prime[i])
  19. {
  20. for(int j = i*i; j < ; j += i+i)
  21. prime[j] = ;
  22. }
  23. }
  24. }
  25.  
  26. queue<int>q;
  27. void bfs()
  28. {
  29. while(!q.empty())q.pop();
  30. memset(vis, , sizeof(vis));
  31. q.push(s);
  32. vis[s] = ;
  33. while(!q.empty())
  34. {
  35. int u = q.front();
  36. q.pop();
  37. if(u == t)
  38. {
  39. printf("%d\n", vis[u]-);
  40. return;
  41. }
  42. int a = u % ;
  43. int b = u % - a;
  44. int c = u % - a - b;
  45. int d = u - u % ;
  46. for(int i = u-a; i <= u-a+; i++)
  47. {
  48. if(prime[i] && !vis[i])
  49. {
  50. q.push(i);
  51. vis[i] = vis[u] + ;
  52. }
  53. }
  54. for(int i = u-b; i <= u-b+; i += )
  55. {
  56. if(prime[i] && !vis[i])
  57. {
  58. q.push(i);
  59. vis[i] = vis[u] + ;
  60. }
  61. }
  62. for(int i = u-c; i <= u-c+; i += )
  63. {
  64. if(prime[i] && !vis[i])
  65. {
  66. q.push(i);
  67. vis[i] = vis[u] + ;
  68. }
  69. }
  70. for(int i = u-d+; i <= u-b+; i += )
  71. {
  72. if(prime[i] && !vis[i])
  73. {
  74. q.push(i);
  75. vis[i] = vis[u] + ;
  76. }
  77. }
  78. }
  79. }
  80.  
  81. int main()
  82. {
  83. prime_init();
  84. int n;
  85. scanf("%d", &n);
  86. while(n--)
  87. {
  88. scanf("%d %d", &s, &t);
  89. bfs();
  90. }
  91. return ;
  92. }

POJ 3126 Prime Path 素数筛,bfs的更多相关文章

  1. POJ - 3126 Prime Path 素数筛选+BFS

    Prime Path The ministers of the cabinet were quite upset by the message from the Chief of Security s ...

  2. POJ 3126 - Prime Path - [线性筛+BFS]

    题目链接:http://poj.org/problem?id=3126 题意: 给定两个四位素数 $a,b$,要求把 $a$ 变换到 $b$.变换的过程每次只能改动一个数,要保证每次变换出来的数都是一 ...

  3. POJ 3126 Prime Path(素数路径)

    POJ 3126 Prime Path(素数路径) Time Limit: 1000MS    Memory Limit: 65536K Description - 题目描述 The minister ...

  4. BFS POJ 3126 Prime Path

    题目传送门 /* 题意:从一个数到另外一个数,每次改变一个数字,且每次是素数 BFS:先预处理1000到9999的素数,简单BFS一下.我没输出Impossible都AC,数据有点弱 */ /**** ...

  5. Prime Path素数筛与BFS动态规划

    埃拉托斯特尼筛法(sieve of Eratosthenes ) 是古希腊数学家埃拉托斯特尼发明的计算素数的方法.对于求解不大于n的所有素数,我们先找出sqrt(n)内的所有素数p1到pk,其中k = ...

  6. 双向广搜 POJ 3126 Prime Path

      POJ 3126  Prime Path Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16204   Accepted ...

  7. poj 3126 Prime Path bfs

    题目链接:http://poj.org/problem?id=3126 Prime Path Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  8. POJ 3126 Prime Path (bfs+欧拉线性素数筛)

    Description The ministers of the cabinet were quite upset by the message from the Chief of Security ...

  9. POJ 3126 Prime Path (BFS + 素数筛)

    链接 : Here! 思路 : 素数表 + BFS, 对于每个数字来说, 有四个替换位置, 每个替换位置有10种方案(对于最高位只有9种), 因此直接用 BFS 搜索目标状态即可. 搜索的空间也不大. ...

随机推荐

  1. 【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() ...

  2. 漏洞大爆光:QQ漏洞、飞秋漏洞、360浏览器劫持…

    随着互联网应用的高速发展,信息安全已深入到诸多领域,前段时间发生的"Struts 2"漏洞及"心脏出血"漏洞影响了二亿中国网民的信息安全.原因是程序猿缺少细致的 ...

  3. 在Linux环境中使用Ext3文件系统

      Linux缺省情况下使用的文件系统为Ext2,ext2文件系统的确高效稳定.但是,随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了:其中系统缺省使用的ext2文件系统 ...

  4. Android(java)学习笔记151: SurfaceView使用

    1.SurfaceView简介       在一般的情况下,应用程序的View都是在相同的GUI线程(UI主线程)中绘制的.这个主应用程序线程同时也用来处理所有的用户交互(例如,按钮单击或者文本输入) ...

  5. 利用java开发一个双击执行的小程序

    之前我们利用java写了很多东西,但是好像都没有什么实际意义. 因为有意义桌面小程序怎么都得有个界面,可是界面又不太好搞.或者 了解到这一层的人就少之又少了. 呀,是不是还得开辟一些版面来介绍awt和 ...

  6. verilog 数组参数

    verilog 支持定义数组参数,这样工程很大时,例化模块时可以使代码更简洁:详见实例 module dma_controller #( parameter integer C0_MAX_MIG_BL ...

  7. spring中@param和mybatis中@param使用区别

    spring中@param /** * 查询指定用户和企业关联有没有配置角色 * @param businessId memberId * @return */ int selectRoleCount ...

  8. Hibernate缓存杂谈

    1.什么是缓存? 缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用程序的运行性能.Hibernate在 ...

  9. aptitude

    aptitude比apt-get 要好用.是 Debian 及其衍生系统中功能极其强大的包管理工具.与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些.举例来说,aptitude在 ...

  10. DDX_Text (MFC)

    DDX_Text (MFC) 描述:该DDX_Text功能管理int的转移,UINT,long,DWORD,CString,float, 或 double编辑控件之间的数据在对话框中,表单视图或控制视 ...