当前位置:网站首页>E - Sugoroku 3(期望dp)
E - Sugoroku 3(期望dp)
2022-08-09 23:16:00 【Harris-H】
E - Sugoroku 3(期望dp)
d p i = ∑ j = i i + a i d p j a i + 1 + 1 dp_i=\dfrac{\sum_{j=i}^{i+a_i}dp_j}{a_i+1}+1 dpi=ai+1∑j=ii+aidpj+1
右边的 d p i dp_i dpi 移项得到:
a i a i + 1 d p i = ∑ j = i + 1 i + a i d p j a i + 1 + 1 \dfrac{a_i}{a_{i}+1}dp_i=\dfrac{\sum_{j=i+1}^{i+a_i}dp_j}{a_i+1}+1 ai+1aidpi=ai+1∑j=i+1i+aidpj+1
d p i = ∑ j = i + 1 i + a i d p j a i + a i + 1 a i = ( ∑ j = i + 1 i + a i d p j ) + a i + 1 a i dp_i=\dfrac{\sum_{j=i+1}^{i+a_i}dp_j}{a_i}+\dfrac{a_i+1}{a_i}=\dfrac{(\sum_{j=i+1}^{i+a_i}dp_j)+a_i+1}{a_i} dpi=ai∑j=i+1i+aidpj+aiai+1=ai(∑j=i+1i+aidpj)+ai+1
取模用逆元递推即可。
时间复杂度: O ( n ) O(n) O(n)
// Problem: E - Sugoroku 3
// Contest: AtCoder - LINE Verda Programming Contest(AtCoder Beginner Contest 263)
// URL: https://atcoder.jp/contests/abc263/tasks/abc263_e
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
// Date: 2022-08-09 12:44:54
// --------by Herio--------
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=2e5+5,M=2e4+5,inf=0x3f3f3f3f,mod=998244353;
const int hashmod[4] = {
402653189,805306457,1610612741,998244353};
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n){
for(int i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\n",a[n]);
}
template <typename T> //x=max(x,y) x=min(x,y)
void cmx(T &x,T y){
if(x<y) x=y;
}
template <typename T>
void cmn(T &x,T y){
if(x>y) x=y;
}
int n;
ll dp[N];
ll suf[N];
ll a[N];
ll inv[N];
ll p=mod;
void init(int n){
inv[1]=1;
for(int i=2;i<=n;i++)
inv[i]=(p-p/i)*inv[p%i]%p;
}
int main(){
ll q = 1;
cin>>n;
rep(i,1,n-1) cin>>a[i];
init(n);
dp[n] = 0;
for(int i=n-1;i;i--){
dp[i] = (suf[i+1]-suf[i+a[i]+1]+a[i]+1)*inv[a[i]]%mod;
suf[i] = (suf[i+1] + dp[i])%mod;
}
printf("%lld",(dp[1]%mod+mod)%mod);
return 0;
}
边栏推荐
- 【C语言】通讯录《静态内存版本》
- Wireshark经典实践和面试13点总结
- Digital wallets, red sea ecological rapid introduction of small programs can help capture device entry wisdom
- 阿雷的血压有些低
- 巴比特 | 元宇宙每日必读:国内首个数字人产业专项支持政策发布,2025年北京数字人产业规模将破500亿元...
- Wireshark classic practice and interview 13-point summary
- CAD 截断线段
- 生成树和交换的总结
- MVC与MVVM模式的区别
- Qt 之 QDateEdit 和 QTimeEdit
猜你喜欢

【C语言】指针和数组的深入理解(第四期)
![[Cloud native] Kubernetes orchestration tools](/img/9c/d10b32340c3c47468adc0ede63dcfe.png)
[Cloud native] Kubernetes orchestration tools

SRv6 performance measurement

下班后用微信处理工作时发病身亡,法院判决:工伤!

781. 森林中的兔子

Qt 之 QDateEdit 和 QTimeEdit

网络协议05 -网络层

《GB5084-2021》PDF下载

How to know the computer boot record?

KingbaseGIS Jin Cang database using manual (6.3. Geometric object creation function)
随机推荐
什么是服务治理
KingbaseGIS Jin Cang database using manual (6.3. Geometric object creation function)
源码编译安装LAMP和LNMP
What are the Shenzhen fortress machine manufacturers?Which one do you recommend?
redis分布式锁代码示例
Jpa 查询view or 无主键的table
《GB5084-2021》PDF下载
错误提示:Syntax error on token “function”, delete this token
IT传奇人物菲尔德的转型经验教训及给CIO的建议
从TRPO到PPO(理论分析与数学证明)
阿里云短信服务开通
hql语言
分布式数据库难题(二):数据复制
MQTT X Web:在线的 MQTT 5.0 客户端工具
阿雷的血压有些低
共创 Ray 中文社区,Ray Forward Meetup 2022 直播邀你参加!
Qt 之 QDateEdit 和 QTimeEdit
【集训DAY5】选数字【数学】
了解什么是架构基本概念和架构本质
redis distributed lock code example