Codeforces 499 D

题意:给\(n\)个曲子,每个曲子每一秒有\(p_i\)的几率可以被猜出来,过了\(t_i\)秒肯定能被猜出来,猜完第\(i\)首歌立即播第\(i+1\)首,问\(T\)秒内期望猜多少首。

思路:考虑\(dp\):\(dp(i,j)\)表示在第\(j\)个时间点正好猜出第\(i\)首歌的概率

转移方程:\(dp(i,j)=dp(i-1,j-t_i)\times(1-p_i)^{t_i-1}+\sum_{x=1}^{t_i-1}dp(i-1,j-x)\times(1-p_i)^{x-1}\times p_i​\)

可以看出,这个肯定是要超时的,所以对\(\sum\)内进行优化

原优化:记录两个变量\(sum\)和\(mul\)表示\(\sum\)内的式子结果是\(sum\times mul\times p_i\),然后在\(j+1\)后\(sum+dp(i-1,j-1)/mul-dp(i-1,j-t_i)/(mul/(1-p_i)^{t_i-1})\),\(mul\times (1-p_i)\)即可。

评:这个优化看起来很对,但是由于\(mul\)实在太小,浮点误差导致变成了\(0\),所以不行。

优化:类似滚动哈希,记录\(sum​\)表示\(\sum​\)内的式子结果是\(sum\times p_i​\),然后在\(j+1​\)后\(sum\times (1-p_i)+dp(i-1,j-1)-dp(i-1,j-t_i)\times (1-p_i)^{t_i-1}​\)即可。

【Codeforces 499D】Name That Tune的更多相关文章

  1. 【codeforces 415D】Mashmokh and ACM(普通dp)

    [codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...

  2. 【codeforces 707E】Garlands

    [题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...

  3. 【codeforces 707C】Pythagorean Triples

    [题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...

  4. 【codeforces 709D】Recover the String

    [题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ...

  5. 【codeforces 709B】Checkpoints

    [题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ...

  6. 【codeforces 709C】Letters Cyclic Shift

    [题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...

  7. 【Codeforces 429D】 Tricky Function

    [题目链接] http://codeforces.com/problemset/problem/429/D [算法] 令Si = A1 + A2 + ... + Ai(A的前缀和) 则g(i,j) = ...

  8. 【Codeforces 670C】 Cinema

    [题目链接] http://codeforces.com/contest/670/problem/C [算法] 离散化 [代码] #include<bits/stdc++.h> using ...

  9. 【codeforces 515D】Drazil and Tiles

    [题目链接]:http://codeforces.com/contest/515/problem/D [题意] 给你一个n*m的格子; 然后让你用1*2的长方形去填格子的空缺; 如果有填满的方案且方案 ...

随机推荐

  1. minitab 输入一串数字

    有时候,我们要向minitab的worksheet输入一串串的数字,很是麻烦. 相如一串数字我们在一个pdf文件存着 那么效率最低的输入方法就是一个一个的输入,"Enter"进入下 ...

  2. postgresql-10.1-3-windows-x64 安装之后,起动pgAdmin 4问题(win10)

    运行pgAdmin出现”pgAdmin 4  the application server could not be contant“ 窗口. 参考:https://stackoverflow.com ...

  3. php获取指定月份月初和月末的时间戳

    获取指定月份的开始时间戳和结束时间戳,只需传入年月即可(2018-01,2018-1两种格式都可以) $data['sel_time'] = '2018-11'; $data['begin_time' ...

  4. React报错:Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix,

    今天在开发时报了以下错误,记录一下 我们不能在组件销毁后设置state,防止出现内存泄漏的情况 出现原因直接告诉你了,组件都被销毁了,还设置个锤子的state啊 解决方案: 利用生命周期钩子函数:co ...

  5. 常见的CSS代码无效问题

    在前端开发中经常会遇到一些CSS代码设置无效的情况,下面我总结一些我遇到的情况. 1.height:100%无效 百分比的高度在设定时需要根据这个元素的父元素容器的高度.例如一个div的高度设为40% ...

  6. IDEA项目搭建十——使用slf4j和logback进行日志记录

    .简介 java里面日志分为两部分一个门面.一个实现,我们所熟知的SLF4j.Log4j.Log4j2.Logback的日志组件slf4j是门面提供的统一的入口,具体实现由log4j.log4j2.l ...

  7. 活字格Web应用平台学习笔记 8 - 查询记录

    基础教程只剩一点点了,学完算了. 这一课的目标是:查询记录 这个操作的原理很简单,增加一个表格,绑定“部门”那个数据,然后增加一个命令,点击查询. 绑定命令: 完成后的实际界面,查询前面是个下拉框: ...

  8. Linux高可靠技术

    1.进程挂死时,有后台监控程序检测重新拉起. 2.进程占用系统资源超过ulimit限定的资源时,会被ulimit杀死,同时配合后台监控程序,重新拉起进程,实现进程可靠性. 3.Linux系统的高可靠性 ...

  9. Windows中几个内存相当的指标

    以下几个内存大小相当: IS:虚拟内存任务管理器:提交内存进程对象上的:PrivateMemorySize64,性能计数器:Process\Private Bytes

  10. (网页)SQLserver中在上线的项目中遇到科学计数法怎么办?

    遇到这个问题,首先上线的数据能清除吗?显然是不能的. 1.首先要去找这些科学计数法的数字是哪里来的. 2.怎么在不改变数据的情况下去操作这张表.可以使用convert()转一下Decimal.