题目链接

http://codeforces.com/contest/1264/problem/C

题解

首先显然断点把序列分成几部分,总答案就等于所有部分的答案之和。考虑如何求一部分内的答案。首先有个非常经典的dp是\(f_i\)表示期望多少次从\(i\)走到\(i+1\), 但是按此方法并不能(至少我不会)导出一个方便维护修改的做法。

这时可以转换思路,考虑另一种DP,设\(f_i\)表示\(i\)这个点期望经过多少次,则有\(f_i=\frac{1}{p_i}f_{i+1}, f_{n+1}=1\), 即\(f_i=\frac{1}{\prod^n_{j=i}p_j}\).

然后就很容易维护了,只需要求后缀积及其后缀和即可。每次二分前驱后继,算一算贡献差即可。

时间复杂度\(O(n\log n)\).

代码

#include<bits/stdc++.h>
#define llong long long
using namespace std; const int N = 2e5;
const int P = 998244353;
set<int> b;
llong p[N+3];
llong s[N+3],ss[N+3];
bool f[N+3];
int n,q; llong ans; llong quickpow(llong x,llong y)
{
llong cur = x,ret = 1ll;
for(int i=0; y; i++)
{
if(y&(1ll<<i)) {y-=(1ll<<i); ret = ret*cur%P;}
cur = cur*cur%P;
}
return ret;
}
llong mulinv(llong x) {return quickpow(x,P-2);} int getprv(int x) {set<int>::iterator iter=b.lower_bound(x); iter--; return *iter;} void Flip(int x)
{
int l = getprv(x),r = *b.upper_bound(x);
llong tmp = (ss[l]-ss[x]+P)%P,coe = f[x]==0?(s[x]-s[r]+P)%P:(s[r]-s[x]+P)%P;
ans = (ans+tmp*coe)%P;
if(!f[x]) {b.insert(x);} else {b.erase(x);}
f[x]^=1;
} int main()
{
scanf("%d%d",&n,&q);
for(int i=1; i<=n; i++) {scanf("%lld",&p[i]); p[i] = p[i]*mulinv(100)%P;}
b.insert(1); b.insert(n+1); f[1] = 1;
s[n+1] = 1ll; for(int i=n; i>=1; i--) {s[i] = s[i+1]*p[i]%P; ss[i] = (mulinv(s[i])+ss[i+1])%P;}
ans = ss[1];
for(int i=1; i<=q; i++)
{
int x; scanf("%d",&x);
Flip(x);
printf("%lld\n",ans);
}
return 0;
}

Codeforces 1264C/1265E Beautiful Mirrors with queries (概率期望、DP)的更多相关文章

  1. Codeforces - 1264C - Beautiful Mirrors with queries - 概率期望dp

    一道挺难的概率期望dp,花了很长时间才学会div2的E怎么做,但这道题是另一种设法. https://codeforces.com/contest/1264/problem/C 要设为 \(dp_i\ ...

  2. 【BZOJ-1419】Red is good 概率期望DP

    1419: Red is good Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 660  Solved: 257[Submit][Status][Di ...

  3. 【bzoj4832】[Lydsy2017年4月月赛]抵制克苏恩 概率期望dp

    题目描述 你分别有a.b.c个血量为1.2.3的奴隶主,假设英雄血量无限,问:如果对面下出一个K点攻击力的克苏恩,你的英雄期望会受到到多少伤害. 输入 输入包含多局游戏. 第一行包含一个整数 T (T ...

  4. 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp

    题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...

  5. Codeforces 908 D.New Year and Arbitrary Arrangement (概率&期望DP)

    题目链接:New Year and Arbitrary Arrangement 题意: 有一个ab字符串,初始为空. 用Pa/(Pa+Pb)的概率在末尾添加字母a,有 Pb/(Pa+Pb)的概率在末尾 ...

  6. 概率期望dp

    对于概率dp,我一直都弄得不是特别明白,虽然以前也有为了考试去突击过,但是终究还是掌握得不是很好,所以决定再去学习一遍,把重要的东西记录下来. 1.hdu4405 Description 在一个 \( ...

  7. [BZOJ4832]抵制克苏恩(概率期望DP)

    方法一:倒推,最常规的期望DP.f[i][a][b][c]表示还要再攻击k次,目前三种随从个数分别为a,b,c的期望攻击英雄次数,直接转移即可. #include<cstdio> #inc ...

  8. LightOJ 1030 Discovering Gold (概率/期望DP)

    题目链接:LightOJ - 1030 Description You are in a cave, a long cave! The cave can be represented by a \(1 ...

  9. [Codeforces 1265E]Beautiful Mirrors

    Description 题库链接 一共有 \(n\) 个关卡,你初始在第一个关卡.通过第 \(i\) 个关卡的概率为 \(p_i\).每一轮你可以挑战一个关卡.若通过第 \(i\) 个关卡,则进入第 ...

随机推荐

  1. java第三次面试总结

    这次面试是二面,由于自己的经验不足,面试的结果不是很令人满意,所以与这家公司失之交臂,在这里记录一下经历,吸取教训. 之前的一面是笔试+面试,面试是主管,今天的面试是总监.在前台招待我的时候,还跟我说 ...

  2. flutter AnimationBuilder

    class BuilderPage extends StatefulWidget { @override State<StatefulWidget> createState() { // ...

  3. 如何把前端用ajax发过来的图片传到node上,并且用node保存在oss图片服务器上?

    一:只上传一张图片 1.1:node需要安装的插件,先安好 npm install ali-oss uuid co --save A.ali-oss 用途:aliyun OSS(Object Stor ...

  4. fastjson源码分析之序列化

    fastJson是很常用的序列化工具,用了这么久一直想底层看一下它的设计,探究一下它序列化和反序列化效率高的秘密.现在从最基础的用法开始,一点点揭开fastJson神秘的面纱.(版本:1.2.50) ...

  5. ECSHOP(3.0.0升级3.6.0)帮助教程

    说明: 本文档只针对于未做过二开的ECSHOP3.0 用户 1.准备材料 先确保正在使用的ECShop系统版本为ecshop3.0.0并且代码没有经过二次开发,然后下载最新的ECShop3.6.0安装 ...

  6. MySQL Replication--开启GTID模式下匿名事务异常

    错误环境: OS: CentOS release 6.5 (Final) MySQL: MySQL 5.7.19 主从参数配置: master_info_repository = TABLE rela ...

  7. MySQL中使用函数时,与后面括号不能之间不能根空格

    修改前代码: select MAX (article_order) from mall_school_article where 1=1 and is_deleted = 0 and status = ...

  8. Zabbix-报警之微信(Wechat alert)告警

    1.前言 Zabbix告警发送是监控系统的重要功能之一.Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合微信作为主要的告警方式 ...

  9. SQL SERVER-Alwayson原理

    流程 1.异步提交模式 主副本无须确认该副本已经完成日志固化,就可提交事务. 主副本不受辅助副本的影响 辅助副本上的DB处于SYNCHRONIZING 2.同步提交模式 主副本要确认副本已经完成日志固 ...

  10. 全局唯一ID生成器(Snowflake ID组成) 分析

    Snowflake ID组成 Snowflake ID有64bits长,由以下三部分组成: time—42bits,精确到ms,那就意味着其可以表示长达(2^42-1)/(1000360024*365 ...