期望入门题。但是我不会做。

考虑设\(E_{x\to{x+1}}\)为\(x\)到\(x+1\)点的期望步数。

则\(ans = \sum_{i = 0}^{n} E_{x\to{x+1}}\)

知\(E_{y\to{x+1}} = \sum_{i = y}^{x}E_{i\to{i + 1}}\)

\(E_{x\to{x+1}} = \frac{1}{son + 1} + \frac{1}{son + 1}\sum_{(x,y)\ in\ {Son}}(E_{y\to{x+1}} + 1)\)

设\(E_{x\to{x+1}} = f_x\),\(sum_x = \sum_i^xf_i\)

\(f_x = (son + 1) + \sum_{(x,y)\ in\ Son}sum_{x-1} - sum_{y - 1}\)

// Problem: P6835 [Cnoi2020]线形生物
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P6835
// Memory Limit: 128 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org) #include<iostream>
#include<cstdio>
#define ll long long
#define mod 998244353
#define N 1000005 int head[N],cnt;
struct P{
int to,next;
}e[N << 1]; inline void add(int x,int y){
e[++cnt].to = y;
e[cnt].next = head[x];
head[x] = cnt;
} ll n,m,k,out[N];
ll f[N],sum[N]; int main(){
scanf("%lld%lld%lld",&k,&n,&m);
for(int i = 1;i <= m;++i){
ll l,r;
scanf("%lld%lld",&l,&r);
add(l,r);
out[l]++;
}
for(int i = 1;i <= n;++i){
f[i] = (out[i] + 1);
for(int j = head[i];j;j = e[j].next){
int v = e[j].to;
f[i] = (f[i] + (sum[i - 1] - sum[v - 1]) % mod + mod) % mod;
}
sum[i] = (sum[i - 1] + f[i]) % mod;
}
std::cout<<sum[n] % mod<<std::endl;
return 0;
}

最新文章

  1. RPC远程过程调用学习之路(一):用最原始代码还原PRC框架
  2. iOS 图片文件格式判断、圆角图片
  3. 用SignalR实现的弹幕功能
  4. ubuntu 安装node.js + express + mongodb
  5. #error和#line实例
  6. js为元素添加onclick事件
  7. [原创]Devexpress XtraReports 系列 8 创建Drill-Through报表
  8. Sublime-text markdown with Vim mode and auto preview
  9. C++ 动态创建对象
  10. DeDe调用body文章内容
  11. [Codeforces Round #237 (Div. 2)] A. Valera and X
  12. sql参数化查询避免注入漏洞的原因探析
  13. Python中什么是变量Python中定义字符串
  14. Hadoop Yarn框架原理解析
  15. 极简科普 1:什么是 VOIP
  16. 利用redis + lua解决抢红包高并发的问题
  17. Java对象、引用、实例
  18. Scala隐式转换
  19. jQuery生成QRcode二维码
  20. 在 Linux 中安装 VMware Tools

热门文章

  1. 【错误分析】NX error status: 32
  2. SLAM名词介绍
  3. Java:volatile笔记
  4. VS2015+OpenCV+Qt
  5. UltraSoft Scrum Meeting 博客汇总
  6. pyinstaller和wordcloud和jieba的使用案列
  7. USB_ID OTG
  8. Netty:Netty的介绍以及它的核心组件(一)—— Channel
  9. 『学了就忘』Linux基础 — 15、了解Linux系统的目录结构
  10. Python matplotlib pylab 画张图