QOJ.ac

QOJ

時間限制: 1.0 s 記憶體限制: 1024 MB 總分: 100 可 Hack ✓

#14513. 賽馬娘

统计

M. 賽馬娘

《賽馬娘 Pretty Derby》是一款競速養成類遊戲。作為一名狂熱的賽馬娘愛好者,你需要在比賽的加速階段表現出色,才能贏得大賽。

以下是加速段的一個簡化模型:在加速段開始的時候,你的角色需要將速度從 $v_1$ 加速到 $v_2$。你的角色有一個初始加速度 $a_0$,並可以通過技能來進一步提升加速度。

你擁有 $n$ 個加速度技能,第 $i$ 個技能的加速度為 $a_i$,持續時間為 $t_i$ 單位時間,成功釋放的機率是 $p_i\%$。為了簡化問題,若某個技能成功釋放,則視為在加速段開始時立即生效。此外,技能是否成功釋放是獨立隨機的,也就是說你的一個技能是否釋放不會影響另一個技能的成功率。

若第 $i$ 個技能成功釋放,則會在接下來的 $t_i$ 單位時間內額外提供 $a_i$ 的加速度;否則不產生任何影響。當速度達到 $v_2$ 時,即使仍有技能處於持續時間內,也會立即停止加速。此外,為了避免加速度過大,你規定了加速度的上限為 $v_2 - v_1$。因此,在任意時刻的實際加速度為:$\min(a_0 + \text{所有成功釋放並且還在持續時間內的技能的加速度}, v_2 - v_1)$。

現在你想知道,在上述規則下,從 $v_1$ 加速到 $v_2$ 的期望的加速時間是多少。

輸入格式

第一行四個正整數 $n, v_1, v_2, a_0$ ($1 \le n, v_1, v_2, a_0 \le 1000, v_1 < v_2$),表示技能數量,初始速度,終止速度和初始加速度。

接下來 $n$ 行,每行三個正整數 $a_i, t_i, p_i$ ($1 \le a_i, t_i \le 1000, 0 \le p_i \le 100$) 表示第 $i$ 個技能的加速度是 $a_i$,持續時間是 $t_i$ 單位時間,成功釋放的機率是 $p_i\%$。

輸出格式

輸出一行一個整數,表示期望的加速時間對於 $998244353$ 取模後的結果。

形式化地,令 $M = 998244353$,可以證明,精確答案可以用不可約分數 $\frac{p}{q}$ 表示,其中 $p$ 和 $q$ 是整數且 $q \not\equiv 0 \pmod M$。你需要輸出的是 $p \cdot q^{-1} \pmod M$,也就是輸出滿足 $0 \le x < M$ 且 $qx \equiv p \pmod M$ 的整數 $x$。可以證明,符合條件的 $x$ 是唯一的。

範例

範例 1 輸入

1 20 32 2
1 4 50

範例 1 輸出

5

說明 1

有 $50\%$ 的機率成功釋放技能,此時只需要 $4$ 單位時間就可以加速完。有 $50\%$ 的機率無法成功釋放技能,此時需要 $6$ 單位時間才可以加速完,因此期望的加速時間是 $\frac{1}{2} \times 4 + \frac{1}{2} \times 6 = 5$。

範例 2 輸入

2 20 30 1
100 1 10
1 1 10

範例 2 輸出

828542822

說明 2

有 $10\%$ 的機率成功釋放第一個技能,此時加速度已經達到上限,因此需要 $1$ 個單位時間加速。有 $9\%$ 的機率成功釋放第二個技能但是沒有成功釋放第一個技能,第二個加速技能只能持續 $1$ 個單位時間,因此需要 $9$ 個單位時間才能成功加速。有 $81\%$ 的機率兩個技能都沒有成功釋放,此時需要 $10$ 個單位時間才能加速。因此期望的加速時間是 $\frac{901}{100}$。$100 \times 828542822 \equiv 901 \pmod{998244353}$,因此答案是 $828542822$。

範例 3 輸入

1 1 10 1
4 10 50

範例 3 輸出

199648876

說明 3

有 $50\%$ 的機率成功釋放技能,此時只需要 $\frac{9}{5}$ 單位時間就可以加速完。有 $50\%$ 的機率無法成功釋放技能,此時需要 $9$ 單位時間才可以加速完,因此期望的加速時間是 $\frac{1}{2} \times \frac{9}{5} + \frac{1}{2} \times 9 = \frac{27}{5}$。$5 \times 199648876 \equiv 27 \pmod{998244353}$,因此答案是 $199648876$。

範例 4 輸入

1 1 5 6
5 2 30

範例 4 輸出

1

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.