传送门

 

参考资料:

  [1]:官方题解(提取码:ar7y)

  [2]:标程(提取码:3qb2)

 

A.Eddy Walker(概率+打表找规律)

•题意

  有一个圆,圆上有 n 个点,编号为 0~n-1;

  初始,Eddy 处于 0 位置,每次他独立地均匀随机选择是向前(0+1)还是向后(0-1 = n-1)走;

  现给你 n,m ,让你求 Eddy 在走 n 步后停留在 m 处的概率;

  最终结果输出前缀积;

•题解

  在补这道题前,补了补概率论的相关概念;

  1.频率定义

    若在相同的条件下进行的 n 次试验中,事件 A 发生了 m 次,则称比值 m / n 为事件 A 发生的频率;

  2.概率的统计定义

    在相同条件下进行大量重复试验,当试验次数充分大时,事件 A 的频率将在某个常数 p 附近摆动,
    这个常数 p 称为事件 A 的概率,记为 P(A);

  有了这些概念后,找了几篇博文看,发现,要么是达标找规律,要么就是直接写结论,没有严格的数学证明;

  哎,本蒟蒻太菜,并不擅长概率论方面的题,暂且补补打表找规律的;

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define mem(a,b) memset(a,b,sizeof(a))
 4 const int maxn=100;
 5 
 6 int n;
 7 bool vis[maxn];
 8 int k[maxn];
 9 
10 int main()
11 {
12     srand((unsigned int)(time(NULL)));
13 
14     scanf("%d",&n);///n最好不要太大,不然,不能再有限的时间内跑出结果
15     for(int i=1;i <= 100000;i++)
16     {
17         mem(vis,false);
18         vis[0]=true;
19 
20         int cur=0;
21         int t=1;
22 
23         while(t < n)
24         {
25             int x=rand()%2 ? 1:-1;///向前或向后走
26             cur=(cur+x+n)%n;
27 
28             if(!vis[cur])
29             {
30                 vis[cur]=true;
31                 t++;
32             }
33         }
34         k[cur]++;
35     }
36     for(int i=1;i < n;i++)
37         printf("%d ",k[i]);
38     printf("\n");
39 
40     return 0;
41 }
打表找规律

相关文章:

  • 2021-12-15
  • 2021-08-31
  • 2021-10-27
  • 2022-03-07
  • 2021-10-29
猜你喜欢
  • 2022-12-23
  • 2022-02-09
  • 2021-07-26
  • 2021-08-03
相关资源
相似解决方案