EVERYTHING HAPPENS FOR T|

wnsyou

园龄:2年4个月粉丝:19关注:16

2023-05-31 17:12阅读: 25评论: 0推荐: 0

abc275_e Sugoroku 4 题解

Sugoroku 4

题意

有一行格子,编号为 0,1,n,你站在 0 号格子上。

你手上有一个转盘,转盘上写有数字 1m,每次转转盘后显示的数值是等概率出现的。

假设某次转转盘后转盘显示的数值为 x,你会行走 x 步,当你走到第 n+1 个格子时,你会回头行走剩余步数,形同飞行棋的最后几步。

当你在某次走完后恰好停在第 n+1 个格子上时游戏结束,你最多转 k 次转盘,问胜利的概率对 998244353 取模的结果。

数据范围

  • 1n,k1000
  • 1mmin(n,10)

思路

一个明显的概率 dp。

提到等概率和取模,不难想到费马小定理,转盘上显示某个数的概率为 1m,根据费马小定理可得 1m1m×m9982443531m9982443532m998244351(mod998244353),可以用快速幂求,下面用 qp 表示。

定义 Fi,j 表示 i 是否可以转一次转盘走到 j,如果是则为 1,否则为 0

  • 状态:dpi,j 表示转了 i 次转盘走到编号为 j 的格子的概率。
  • 转移:dpi,j=0k<nFk,i×dpi1,k×qp,你也可以思考一下扩散性转移。
  • 初始状态:dp0,0=1
  • 目标状态:1ikdpi,n

注意取模和乘法爆 int 的细节即可。

复杂度

  • 时间:O(n×m×k)
  • 空间:O(n×k)

Code

点击查看代码
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int mod = 998244353, N = 1e3 + 10;
int n, m, k;
ll qp, dp[N][N], ans;
ll qmod (ll a, int b) { // 快速幂求 qp
ll ans = 1;
while (b) {
if (b & 1) {
ans = (ans * a) % mod;
}
a = (a * a) % mod, b >>= 1;
}
return ans;
}
int Q (int x, int t) { // 求按规则从 x 往后走 t 步会走到的格子的编号
if (x + t <= n) { // 不用回头
return x + t;
}
return 2 * n - t - x; // 回头
}
int main () {
ios::sync_with_stdio(0), cin.tie(0);
cin >> n >> m >> k;
qp = qmod(m, mod - 2), dp[0][0] = 1;
for (int i = 0; i < k; i++) { // 扩散形转移好写
for (int j = 0; j < n; j++) {
for (int l = 1; l <= m; l++) { // 枚举走多少步
dp[i + 1][Q(j, l)] = (dp[i + 1][Q(j, l)] + dp[i][j] * qp) % mod; // 取模!
}
}
}
for (int i = 1; i <= k; i++) {
ans = (ans + dp[i][n]) % mod;
}
cout << ans;
return 0;
}

本文作者:wnsyou の blog

本文链接:https://www.cnblogs.com/wnsyou-blog/p/17446532.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wnsyou  阅读(25)  评论(0编辑  收藏  举报
  1. 1 勝利への道 安藤浩和
  2. 2 Minecraft’s End Eric Fullerton
  3. 3 月光曲完整版 贝多芬 云熙音乐
  4. 4 平凡之路 (Live版) 朴树
  5. 5 Minecraft C418
  6. 6 Paradise NiziU
  7. 7 叫我,灰原哀 龙大人不喷火
  8. 8 心机之蛙,一直摸你肚子 ——《名侦探柯南》原创同人曲 炊饭,叶辞樱,温海,寒砧,南柯柯,小茜玛姬,盛姝,阿崔Ac,贝壳初,千湛,兮茶子DaYu,乔慕,黎鹿北,起千温卿,遮阳伞,曲悠
  9. 9 战 歌 此去经年
Paradise - NiziU
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : AKIRA/Bang Chan (3RACHA)/CHANGBIN (3RACHA)/HAN (3RACHA)

作曲 : Bang Chan (3RACHA)/CHANGBIN (3RACHA)/HAN (3RACHA)/VERSACHOI

编曲 : VERSACHOI/Bang Chan(3RACHA)

昔々きいた話

ふたつの虹を超えたその向こう

光り輝く泉がある

その水面(みなも)映るのは

ほんとの自分

しあわせは今 しあわせは空

Let’s fly fly & fly We fly & fly

目と目を合わせ

信じあえるよ 感じあえるさ

Let’s fly fly & fly We fly & fly

いつか

わかるだろう

君にはもう君だけの色も形も

優しさも強さもあるんだ

上手くいかなくたって

失敗ばっかりだって

ぼくはここにいるよ

I love you so much 大好きなんだ

そのままで 大好きさ Paradise

宝物はそこにあるよ 気がついてよ

世界中探しても

君は君しかいないよ

広がる楽園 繋げよう

誰も誰もが Paradise

雨が降れば ぬかるむ道 Oh yeah

道端に咲いた花に集まる蝶を

照らす太陽は全てを温め

乾いた道に雨は降る

あたりまえだけど奇跡

小さなちっぽけな今には

大きな大きな夢が詰まっているの

悔しさに泣いたって

手を差し伸べるから

ぼくはここにいるから

I love you so much 大好きなんだ

そのままで 大好きさ Paradise

宝物は君なんだよ 気がついてよ

この惑星(ほし)の歴史にも

君は君しかいないよ

目に見えないけど確かに

ひとりひとりの Paradise

しあわせは今 しあわせは空

Let’s fly fly & fly We fly & fly

目と目を合わせ

信じあえるよ 感じあえる

だから大丈夫

心のまま行こう Paradise

加载中…

{{tag.name}}

{{tran.text}}{{tran.sub}}
无对应文字
有可能是
{{input}}
尚未录入,我来提交对应文字
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示