Description

Input

Output

Data Constraint

Solution

  • 观察题目,就可以得出有变换:

    Ai=∑j=1nAj∗Pi,j

    A_i=\sum_{j=1}^{n}{A_j*P_{i,j}}

  • 那么用 O(N3)O(N^3) 的高斯消元就可以通过 52% 的数据。

  • 要 AC 此题,就要用到 MCMC(Markov Chain-Monte Carlo,⻢尔科夫链蒙特卡洛)算法

  • 天啊!什么高大上的算法?

  • 随机得出⼀个概率向量 AA,计算 A∗PkA*P^k,输出即可。

  • 其实就是随意使某个位置为 11(例如使 A1=1A_1=1),其它位置为 00 。

  • 之后不断执行 O(N2)O(N^2) 的变换,AA 始终会变成所求的行向量(别问我为什么)。

  • 要使用这个MCMC算法呢,就要什么变换需没周期性、不可约,具体可参考zhiyong_will的博客。

  • 具体实现的时候可以写⼀个 whilewhile 循环,直到

    Maxni=1|Ai−Bi|<10−15

    Max^{n}_{i=1} |Ai − Bi|

  • ⼀般来说 kmax=12k_{max}=12 ,则时间复杂度 O(k∗N2)O(k*N^2) 。

Code

#include<cstdio>
#include<cmath>
#include<cctype>
using namespace std;
typedef double DB;
const int N=2505;
const DB eps=1e-15;
int n,a,b,c;
int q[N];
DB p[N][N],f[N],g[N];
int main()
{scanf("%d%d%d%d",&n,&a,&b,&c);for(int i=1;i<=n;i++){int s=q[1]=(a*q[n]+b)%c;for(int j=2;j<=n;j++) s+=q[j]=(a*q[j-1]+b)%c;s+=n;for(int j=1;j<=n;j++) p[i][j]=((DB)q[j]+1)/s;}f[1]=1;while(true){for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) g[j]+=f[i]*p[i][j];bool pd=true;for(int i=1;i<=n;i++)if(fabs(f[i]-g[i])>eps){pd=false;break;}if(pd) break;for(int i=1;i<=n;i++) f[i]=g[i],g[i]=0;}for(int i=1;i<=n;i++) printf("%.18lf ",g[i]);return 0;
}

JZOJ 5616. 【NOI2018模拟3.31】沧海尘记相关推荐

  1. JZOJ 5618. 【NOI2018模拟3.31】华胥梦天

    Description Input Output Data Constraint Solution 吉如一论文里的线段树算法-- 对于一个区间,记录三个值:最大值 mx1mx1,最大值的个数 cntc ...

  2. JZOJ 5623. 【NOI2018模拟4.2】program

    Description Input Output Sample Input 10 5 8>6<2<>54< 4 7 1 10 4 4 2 9 8 10 Sample Ou ...

  3. JZOJ 5603. 【NOI2018模拟3.27】Xjz

    Description 给定字符串 S 和 T. 串A和串B匹配的定义改为:存在一个字符的映射,使得A应用这个映射之后等于B,且这个映射必须为一个排列. A=121, B=313,当映射为{1-> ...

  4. JZOJ 5643. 【NOI2018模拟4.10】最小代价

    Description 给定一张n个点m条边的无向图,点编号1到n,每个点x有两个权值ax和bx.给定k,选出图中一个大小为k的点集S,使得S中任意两个点之间存在仅经过这个点集中的点的路径.S也存在两 ...

  5. JZOJ 5640. 【NOI2018模拟4.9】劈配

    Description Input Output 输出到文件 mentor.out 中. 按顺序输出每组数据的答案.对于每组数据,输出 2 行: • 第 1 行输出 n 个用空格隔开的正整数,其中第 ...

  6. JZOJ 5639. 【NOI2018模拟4.8】秘密袭击

    Description Input Output Sample Input [样例1 输入] 5 3 3 2 1 1 2 3 1 2 2 3 1 4 1 5 [样例2 输入] 10 2 3 2 1 1 ...

  7. JZOJ 5638. 【NOI2018模拟4.8】IIIDX

    Description Input Output Sample Input 4 2.0 114 514 1919 810 Sample Output 114 810 514 1919 Data Con ...

  8. JZOJ 5637. 【NOI2018模拟4.8】一双木棋

    Description 菲菲和牛牛在一块n 行m 列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手. 棋局开始时,棋盘上没有任何棋子,两人轮流在格子上落子,直到填满棋盘时结 束.落子的规则是:一个格子可 ...

  9. JZOJ 5629. 【NOI2018模拟4.4】Map

    Description Rin是个特别好动的少女. 一天Rin来到了一个遥远的都市.这个都市有N个建筑,编号从1到N,其中市中心编号为1,这个都市有M条双向通行的街道,每条街道连接着两个不同的建筑,其 ...

最新文章

  1. svn 常见问题记录
  2. [Android] android的消息队列机制
  3. .NET连接MySQL数据库方法
  4. 使用curl工具测试SAP Spartacus的SSR模式是否工作正常
  5. java取两个10_30的随机整数_产生10个[30,90]区间上的随机整数,然后对其用选择法...
  6. 俄语使用计算机怎么说,计算机俄语常用词汇
  7. 常用正则表达式(不断更新ing...)
  8. Python算法、经典面试常见案例题大分享!!!
  9. Android可拖动对话框Dialog
  10. 线性电阻软件的伏安特性曲线测试,线性电阻和非线性电阻的伏安特性曲线
  11. ASP.Net Core Web Api在Windows服务器上部署
  12. 最近发现谷歌浏览器打开网页速度很慢,比IE都慢
  13. 【Pytorch】张量复制方法repeat、repeat_interleave和tile
  14. php新闻删除功能设计,PHP开发 新闻发布系统之新闻删除页面
  15. 关于儿童踢足球,是否会对长高有不良影响
  16. Amazon EKS基于GitLab的CICD实践一 GitLab的部署和配置篇
  17. 注册邮箱接收验证码小结
  18. [noip模拟赛2017.7.4]
  19. 笔记本电脑分屏显示设置
  20. 2020清华深圳国际研究院 计算机线上夏令营总结

热门文章

  1. Leetcode 每日一题 40 组合2
  2. 编程方法学13:字符串处理
  3. LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别
  4. 【Leetcode】二分法左侧边界右侧边界模板
  5. [云炬创业基础笔记] 第四章测试11
  6. [云炬创业基础]创业过程
  7. 科大星云诗社动态20201203
  8. 云炬随笔20211012(3)
  9. 中英文论文高效排版插件一一 Tip ( Text Image P rocessing )
  10. 海南师范大学计算机设计大赛证书,我校品牌VI设计作品在中国大学生计算机设计大赛海南省赛中获得一等奖...