JZOJ 5616. 【NOI2018模拟3.31】沧海尘记
Description
Input
Output
Data Constraint
Solution
观察题目,就可以得出有变换:
Ai=∑j=1nAj∗Pi,jA_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−15Max^{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】沧海尘记相关推荐
- JZOJ 5618. 【NOI2018模拟3.31】华胥梦天
Description Input Output Data Constraint Solution 吉如一论文里的线段树算法-- 对于一个区间,记录三个值:最大值 mx1mx1,最大值的个数 cntc ...
- 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 ...
- JZOJ 5603. 【NOI2018模拟3.27】Xjz
Description 给定字符串 S 和 T. 串A和串B匹配的定义改为:存在一个字符的映射,使得A应用这个映射之后等于B,且这个映射必须为一个排列. A=121, B=313,当映射为{1-> ...
- JZOJ 5643. 【NOI2018模拟4.10】最小代价
Description 给定一张n个点m条边的无向图,点编号1到n,每个点x有两个权值ax和bx.给定k,选出图中一个大小为k的点集S,使得S中任意两个点之间存在仅经过这个点集中的点的路径.S也存在两 ...
- JZOJ 5640. 【NOI2018模拟4.9】劈配
Description Input Output 输出到文件 mentor.out 中. 按顺序输出每组数据的答案.对于每组数据,输出 2 行: • 第 1 行输出 n 个用空格隔开的正整数,其中第 ...
- 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 ...
- 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 ...
- JZOJ 5637. 【NOI2018模拟4.8】一双木棋
Description 菲菲和牛牛在一块n 行m 列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手. 棋局开始时,棋盘上没有任何棋子,两人轮流在格子上落子,直到填满棋盘时结 束.落子的规则是:一个格子可 ...
- JZOJ 5629. 【NOI2018模拟4.4】Map
Description Rin是个特别好动的少女. 一天Rin来到了一个遥远的都市.这个都市有N个建筑,编号从1到N,其中市中心编号为1,这个都市有M条双向通行的街道,每条街道连接着两个不同的建筑,其 ...
最新文章
- svn 常见问题记录
- [Android] android的消息队列机制
- .NET连接MySQL数据库方法
- 使用curl工具测试SAP Spartacus的SSR模式是否工作正常
- java取两个10_30的随机整数_产生10个[30,90]区间上的随机整数,然后对其用选择法...
- 俄语使用计算机怎么说,计算机俄语常用词汇
- 常用正则表达式(不断更新ing...)
- Python算法、经典面试常见案例题大分享!!!
- Android可拖动对话框Dialog
- 线性电阻软件的伏安特性曲线测试,线性电阻和非线性电阻的伏安特性曲线
- ASP.Net Core Web Api在Windows服务器上部署
- 最近发现谷歌浏览器打开网页速度很慢,比IE都慢
- 【Pytorch】张量复制方法repeat、repeat_interleave和tile
- php新闻删除功能设计,PHP开发 新闻发布系统之新闻删除页面
- 关于儿童踢足球,是否会对长高有不良影响
- Amazon EKS基于GitLab的CICD实践一 GitLab的部署和配置篇
- 注册邮箱接收验证码小结
- [noip模拟赛2017.7.4]
- 笔记本电脑分屏显示设置
- 2020清华深圳国际研究院 计算机线上夏令营总结
热门文章
- Leetcode 每日一题 40 组合2
- 编程方法学13:字符串处理
- LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别
- 【Leetcode】二分法左侧边界右侧边界模板
- [云炬创业基础笔记] 第四章测试11
- [云炬创业基础]创业过程
- 科大星云诗社动态20201203
- 云炬随笔20211012(3)
- 中英文论文高效排版插件一一 Tip ( Text Image P rocessing )
- 海南师范大学计算机设计大赛证书,我校品牌VI设计作品在中国大学生计算机设计大赛海南省赛中获得一等奖...