题意

传送门 P5516 [MtOI2019]小铃的烦恼

题解

令所有的书魔法属性都一样时为终止状态,考虑统计各个终止状态的贡献。固定终止状态的属性值 a a a,那么只关注属性为 a a a 与属性不为 a a a 的书籍即可。 f k f_k fk​ 代表当前属性为 a a a 的书籍有 k k k 本,令
p = k ( n − k ) n ( n − 1 ) p = \frac{k(n-k)}{n(n-1)} p=n(n−1)k(n−k)​ 考虑任意一步状态转移,则 f k f_{k} fk​ 向 f k − 1 , f k + 1 f_{k-1}, f_{k+1} fk−1​,fk+1​ 转移概率相同。其中 f n = 0 f_n = 0 fn​=0,为了仅考虑 f k → f n f_k\rightarrow f_n fk​→fn​ 的贡献,令 f 0 = 0 f_0 = 0 f0​=0。那么
f k = p ( f k − 1 + f k + 1 ) + ( 1 − 2 p ) f k + k n f_k = p(f_{k-1} + f_{k+1}) + (1-2p)f_k + \frac{k}{n} fk​=p(fk−1​+fk+1​)+(1−2p)fk​+nk​ 最后一项代表 f k → f n f_k\rightarrow f_n fk​→fn​ 的概率,问题等价于 x x x 轴上某点 k k k 向左右移动的概率相同,求不抵达 0 0 0 的情况下抵达 n n n 的状态。

此时可以列出 n n n 个 n n n 元一次方程。系数矩阵只有主对角线与其上下两条对角线非零,那么可以每一行 i i i 只对 i + 1 i+1 i+1 行消元,最后回代求解。总时间复杂度 O ( n ) O(n) O(n)。

#include <bits/stdc++.h>
using namespace std;
#define pb push_back
const int MAXN = 2E3 + 5;
string S;
int cnt[128];
double B[MAXN][MAXN], f[MAXN];int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin >> S;int n = S.size();B[0][0] = 1, B[n][n] = 1;for (int k = 1; k < n; ++k){B[k][k - 1] = -1;B[k][k] = 2;B[k][k + 1] = -1;B[k][n + 1] = 1.0 * (n - 1) / (n - k);}for (int k = 0; k < n; ++k){B[k][k + 1] /= B[k][k];B[k][n + 1] /= B[k][k];B[k + 1][k + 1] -= B[k + 1][k] * B[k][k + 1];B[k + 1][n + 1] -= B[k + 1][k] * B[k][n + 1];}f[n] = B[n][n + 1];for (int k = n - 1; k >= 0; --k)f[k] = B[k][n + 1] - B[k][k + 1] * f[k + 1];double res = 0;for (int i = 0; i < n; ++i)++cnt[S[i]];for (int i = 0; i < 128; ++i)res += f[cnt[i]];cout << fixed << setprecision(1) << res << '\n';return 0;
}

P5516 [MtOI2019] 数学期望 + 高斯消元相关推荐

  1. P4321-随机漫游【状压dp,数学期望,高斯消元】

    正题 题目链接:https://www.luogu.com.cn/problem/P4321 题目大意 给出nnn个点mmm条边的一张无向图,qqq次询问. 每次询问给出一个点集和一个起点,求从起点出 ...

  2. bzoj3143,P3232-[Hnoi2013]游走【数学期望,高斯消元,贪心】

    正题 题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3143 https://www.luogu.org/problem/P3232 题 ...

  3. 【BZOJ】3143: [Hnoi2013]游走 期望+高斯消元

    [题意]给定n个点m条边的无向连通图,每条路径的代价是其编号大小,每个点等概率往周围走,要求给所有边编号,使得从1到n的期望总分最小(求该总分).n<=500. [算法]期望+高斯消元 [题解] ...

  4. BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡 概率与期望+高斯消元

    这个还挺友好的,自己相对轻松能想出来~ 令 $f[i]$ 表示起点到点 $i$ 的期望次数,则 $ans[i]=f[i]\times \frac{p}{q}$ #include <cmath&g ...

  5. ICPC 2005 hangzhou Generator (UVA1358)KMP + 期望DP / 高斯消元

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Generator Weblink https://www.luogu.com.cn/problem/ ...

  6. [BZOJ 3143][Hnoi2013]游走(高斯消元+期望)

    Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点, ...

  7. 【高斯消元】兼 【期望dp】例题

    [总览] 高斯消元基本思想是将方程式的系数和常数化为矩阵,通过将矩阵通过行变换成为阶梯状(三角形),然后从小往上逐一求解. 如:$3X_1 + 2X_2 + 1X_3 = 3$ $           ...

  8. BZOJ.2707.[SDOI2012]走迷宫(期望 Tarjan 高斯消元)

    题目链接 一个点到达终点的期望步数 \(E_i=\sum_{(i,j)\in G}\frac{E_j+1}{out[i]}\),\(out[i]\)为点\(i\)的出度. 那么对于一个DAG可以直接在 ...

  9. 【SDOI2017】硬币游戏【KMP】【概率期望】【高斯消元】

    题意:给 nnn 个长度为 mmm 的 01 串,一个 01 串初始为空,不断随机一个字符加在后面,当出现给定的 nnn 个串中的一个时停止.分别求在 nnn 个串处停止的概率. 考场思路历程: 显然 ...

最新文章

  1. python的日志库logging,真香!!!
  2. mysql 查询 字段是否为空
  3. OpenGL.error.NullFunctionError: Attempt to call an undefined function”解决方案
  4. 移动Web开发实践——解决position:fixed自适应BUG
  5. cookie与session区别|详细版
  6. 2017c语言预测,2017计算机二级C语言上机最终预测题
  7. 浅析ios开发中Block块语法的妙用
  8. pixhawk position_estimator_inav.cpp思路整理及数据流
  9. 逆向工程核心原理读书笔记-API钩取之计算器显示中文数字
  10. DAM的内涵正在改变
  11. 爬虫:查找自己浏览器headers
  12. Matlab 用sort函数排序 二维数组
  13. Linux安装及升级jdk1.8
  14. asp.net高校宿舍后勤管理系统
  15. 氚云后台代码-创建、更新子表以及发送消息
  16. APICloud手机端网站直接制作手机APP
  17. ROS launch文档解析
  18. 2019中南大学考研计算机考试,2019年中南大学计算机考研经验分享(复试+真题)...
  19. Java中为什么有时候通过指定编码集无法解决乱码
  20. 移动地图定位软件完成了

热门文章

  1. 计算机网络学习笔记5-UDP广播
  2. sqoop和flume的区别
  3. 三星s6android7.0root,三星GALAXY S6 root G9200 7.0 root G9200ZCU2ERK2 root
  4. 适合2岁多宝宝观看的动画有什么推荐?
  5. 自然语言处理NLP星空智能对话机器人系列:NLP on Transformers 101
  6. android 判断双卡手机号码,android双卡机中判断当前使用的是那张卡的数据流量
  7. Mac技巧|如何阻止 iCloud 同步某个文件夹?
  8. c语言怎么把数字倒过来_c语言编程:实现数字的翻转
  9. 台式计算机键盘不亮,台式机键盘不亮怎么办
  10. 学用计算机图片,电脑怎么截图?1分钟教你学会用电脑自带截图工具瞬间截图...