题目链接

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

题解

吐槽:为什么我赛后看cf的题就经常1h内做出Div.1 C, 一打cf就动不动AB题不会啊……zblzbl
首先显然断点把序列分成几部分,总答案就等于所有部分的答案之和。考虑如何求一部分内的答案。首先有个非常经典的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. 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp

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

  2. ACM概率期望dp刷题总结

    这个周刷了很多概率期望有关的dp题目,缘起2016青岛D题和取log的神操作题HDU 5988 2016青岛区域赛 (最小费用流) 这类题目没有固定的模板,而且概率可以很容易插入一些经典模型,比如下面 ...

  3. CodeForces - 1560F2 Nearest Beautiful Number (hard version)(二分+数位dp)

    题目链接:点击查看 题目大意:给出一个十进制数字 nnn 和一个约束 kkk,问大于等于 nnn 且满足不同的数位个数小于等于 kkk 的最小的数字是多少 题目分析:自己写的贪心太丑了,就不放上来丢人 ...

  4. [概率期望DP]JZOJ 4212 我想大声告诉你

    Description 因为小Y 是知名的白富美,所以自然也有很多的追求者,这一天这些追求者打算进行一次游戏来踢出一些人,小R 自然也参加了. 这个游戏有n 个人参加,每一轮随机选出一个还没有出局的人 ...

  5. 大佬(概率期望DP)

    首先根据数据范围,可以判断基本上是n^2的复杂度 通过分析我们发现每一次都可以从m个数中任意选,既然任意选,那么此时的概率的分母就是不变的,然而题中涉及的是某一段的最大值,所以我们按套路假设 f[i] ...

  6. 【BZOJ2337】XOR和路径,概率期望DP+高斯消元

    Time:2016.08.27 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 与游走思路有一定相似的地方 对答案的每一位进行判断 通过高斯消元解出每个点到n xor路径为1的概率 ...

  7. [NOIP2016]换教室(概率期望$DP$)

    其实吧我老早就把这题切了--因为说实话,这道题确实不难啊--李云龙:比他娘的状压DP简单多了 今天我翻以前在Luogu上写的题解时,突然发现放错代码了,然后被一堆人\(hack\)--蓝瘦啊\(ORZ ...

  8. BZOJ-4008: [HNOI2015]亚瑟王 (概率期望DP)

    4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special Judge Submit: 1627  Solved: ...

  9. BZOJ-1076: [SCOI2008]奖励关 (概率期望DP 未完待续)

    1076: [SCOI2008]奖励关 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 2938  Solved: 1537 [Submit][Sta ...

最新文章

  1. 游戏平台运维自动化扩展之故障自愈
  2. Android数据库专家秘籍(七)经验LitePal查询艺术
  3. Android 通过 “隐式意图” 打开 系统的浏览器 访问 百度页面
  4. c++深拷贝和浅拷贝的区别?
  5. PlayFab(二)如何通过Demo应用来进一步熟悉Playfab
  6. mysql5.7.11解压版安装_Mysql5.7.11在windows10上的安装与配置(解压版)
  7. 员工评价系统 winform
  8. Maven-打包的时候丢失非.java的文件
  9. rgbdslam_v2编译过程中引起的needed by错误
  10. mysql中null与“空值”的坑
  11. thymeleaf 消息推送_SpringBoot整合WebSocket实现消息推送
  12. CentOS 7.2 rpm 安装 Mysql 5.7
  13. Golang六款优秀Web框架对比
  14. 自制美容面膜 简单实用方便让你大换肤 - 健康程序员,至尚生活!
  15. 微信防撤回(.dll补丁形式)
  16. RNN(三) 在SLU中的应用
  17. win10设置护眼颜色(豆沙绿)
  18. AnyPi智能语音交互方案开发-智能语音音箱方案
  19. 【首次起用黑人模特的Prada】
  20. python 安装spyder和问题

热门文章

  1. 手撕 CNN 之 AlexNet(PyTorch 实战篇)
  2. 等值连接_sql高阶教程:非等值自连接
  3. C/C++中extern关键字详解与应用
  4. 串口通信模块4:串口操作自定义类(1)
  5. 怎样实现关闭connection时自动关闭Statement和ResultSet
  6. 关于c#中 的动态加载程序集
  7. JQUERY获取各种HTML控件的值
  8. cordova splashscreen插件在android平台的使用
  9. 关于CSS中的相对路径和绝对路径
  10. mybatisPlus分页限制500条数据