题目链接:点击查看

题目大意:在二维平面中有一个点 ( x , y ) ,规定 “ 好点 ” 的定义是,gcd( x , y ) > 1 ,现在从点 ( x , y ) 开始,每一次都能等概率的选择:

  1. 去周围八个方向中的“好点”
  2. 停留在原地不动

现在问在走无穷多次步数后,能够从点 ( x , y ) 出发再回到点 ( x , y ) 的概率是多少

题目分析:比赛时稍微打了个表,感觉是暴力bfs出所有点然后计算答案,主要是答案不会计算,就放掉了,因为 1e12 以内的相邻两个素数之差最大也不过几百,对应到二维平面中最多也就只有几万个点,所以可以暴力bfs出所有点

关于答案的计算,是一个结论,题解说的是“图上随机游走”算法,但我找不到相关博客去学习,无奈只能背过结论以防以后再遇到了

结论就是在建出无向图后,答案就是 “起点的度数 + 1 ” 除以 “总度数 + n”

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<bitset>
#include<unordered_map>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=1e5+100;const int b[8][2]={0,1,0,-1,1,0,-1,0,1,1,-1,-1,-1,1,1,-1};set<pair<LL,LL>>vis;void bfs(LL x,LL y)
{int ans1=0,ans2=0;queue<pair<LL,LL>>q;q.emplace(x,y);vis.emplace(x,y);while(q.size()){tie(x,y)=q.front();q.pop();if(x==y)//如果遍历到对角线的话,答案为0/1 {ans1=0,ans2=1;break;}ans2++;//统计有多少个点:ans2中的+n for(int i=0;i<8;i++){LL xx=x+b[i][0];LL yy=y+b[i][1];if(__gcd(xx,yy)==1)continue;ans2++;//记录度数if(vis.count(make_pair(xx,yy)))continue;vis.emplace(xx,yy);q.emplace(xx,yy); }if(!ans1)//记录(起点度数+1)的答案 ans1=ans2;}int gcd=__gcd(ans1,ans2);ans1/=gcd,ans2/=gcd;printf("%d/%d\n",ans1,ans2);
}int main()
{
#ifndef ONLINE_JUDGE
//  freopen("data.in.txt","r",stdin);
//  freopen("data.out.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);int w;cin>>w;while(w--){LL x,y;scanf("%lld%lld",&x,&y);bfs(x,y);}return 0;
}

HDU多校7 - 6853 Jogging(bfs+结论)相关推荐

  1. 权值线段树小结(hdu多校,普通平衡树,郁闷的出纳员)

    之前刷了一点主席树的题目,但是没有系统的做过权值线段树的题目.主席树是多根权值线段树的综合.权值线段树可以解决在总区间里求第k大的问题.在普通的线段树里,我们每一个节点维护的是权值大小.但是在权值线段 ...

  2. 【HDU 2612 Find a Way(BFS)】(兼BFS入门笔记)

    [HDU 2612 Find a Way(BFS)](兼BFS入门笔记) 原题入口: http://acm.hdu.edu.cn/showproblem.php?pid=2612 第一篇在CSDN的博 ...

  3. HDU 多校 6400 Parentheses Matrix(构造)

    HDU 多校 6400 Parentheses Matrix(构造) // Problem: D. Parentheses Matrix // Contest: Codeforces - 2018 C ...

  4. 2018 HDU多校第四场赛后补题

    2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...

  5. HDU 6386 Age of Moyu DFS+BFS

    /** HDU 6386 Age of Moyu DFS+BFS 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6386题意:1-->n的最小换乘次数 ...

  6. HDU 1429 胜利大逃亡(续) (BFS+位压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)  ...

  7. HDU - 5637 Transform (思维、bfs预处理)

    HDU - 5637 题目大意: 给出n个数的序列a,对于一个整数x,有两种操作: 1.改变x二进制中任一位 2.将x变为x^a[i] m次查询,每次查询输入两个整数x和y,问x最少经过多少次操作可以 ...

  8. HDU 2612 Find a way(BFS)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2612 题目大意:给你一张n*m的图,图上有两个点Y.M,和若干个点@,找出某个点@使Y.M到这里的距离 ...

  9. HDU 4069 Squiggly Sudoku 【DLX+BFS】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4069 ★这题一开始题都看不懂,后来发现还是挺有意思的 题意: 给你一个9x9的矩阵, 矩阵里面有一些墙 ...

最新文章

  1. TensorFlow下的基础命令语句:数组、字典、判断、循环、与函数
  2. Securing Data With Blockchain and AI(基于区块链和人工智能的数据保护)
  3. 各项兼容坑的记录-持续更新
  4. 视频号,张小龙的星辰大海
  5. 二级计算机excel以宏保存,Excel宏保存
  6. 火了!堪称神级的 Spring Boot 手册
  7. 让你每天抽出两小时陪小孩子读书,你能坚持吗?
  8. ORC 和 Parquet比较入门
  9. 4. DICOM图像层级分类-DCMTK-元素读取
  10. Win10 - 使用‘Alt+Tab’不能切换窗口及更改切换风格
  11. 基于MATLAB的计算机视觉和图像处理代码
  12. Java进阶-常用API
  13. 【Computer Organization笔记08】指令系统概述,指令格式,寻址方式
  14. ACdream 之ACfun 题解
  15. 一文读懂 | Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈
  16. #爬取电影天堂的磁力链接#
  17. 人工智能:声纹相关基础概念介绍
  18. 《GAMES104-现代游戏引擎:从入门到实践》-02 学习笔记
  19. 冷补丁和热补丁的区别
  20. 【程序人生】:腾讯的职级系统

热门文章

  1. java中do loop的使用_Java中do-while循环——通过示例学编程(11)
  2. 使用Spring 框架能带来哪些好处?
  3. 语义化版本命名通行规则
  4. 依赖版本控制-pom文件介绍
  5. Hive的安装-Hive配置
  6. MybatisPlus入门之介绍
  7. 函数--函数的快速体验
  8. Dubbo的Provider配置
  9. Disruptor并发框架-1
  10. java log4j 多个文件_java – Log4j:每个请求一个日志文件