498B Name That Tune

传送门

题目大意

n首音乐,第i首被听出来的概率为pi,刚开始听第一首,1s后如果听出来了则放第下一首,否则接着听这一首,第i首在连续听了ti s之后一定会被听出来,问Ts后听出来的歌的期望数量。

分析

我们非常容易想到dp[i][j]表示考虑前i首歌总共用了j秒的期望得分

但是我们发现转移复杂度O(T),总复杂度O(N^3)

于是我们考虑优化

我们想到对于dp[i][j]的一部分答案可以由dp[i][j-1]*(1-p[i])得到

于是转移复杂度优化到了O(1)

细节较多,详见代码

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
const double eps = 1e-6;
double dp[5050][5050],Ans;
int t[5050],pp[5050];
int main(){
    int n,m,i,j,k,T;
    scanf("%d%d",&n,&T);
    for(i=1;i<=n;i++)scanf("%d%d",&pp[i],&t[i]);
    dp[0][0]=1;
    for(i=1;i<=n;i++){
      double p=(double)pp[i]/100;
      double x=pow(1-p,t[i]-1);
      double now=dp[i-1][0];
      for(j=1;j<=T;j++){
          if(j-t[i]>=0)now-=dp[i-1][j-t[i]]*x;
          dp[i][j]+=now*p;
        if(j-t[i]>=0)dp[i][j]+=dp[i-1][j-t[i]]*x;
        now=now*(1-p)+dp[i-1][j];
        Ans+=dp[i][j];//我们不将数首歌期望合起来算,而是每次都累加答案        //但是每次算概率是需要用到之前的期望
      }
    }
    printf("%0.6lf",Ans);
    return 0;
}

原文地址:https://www.cnblogs.com/yzxverygood/p/10360444.html

时间: 2024-08-28 21:59:40

498B Name That Tune的相关文章

codeforces 498B. Name That Tune

题目写的比较难懂,题目大意:给你一个n,m代表有n首歌,在m秒内进行猜歌.让你求出m秒过后你能猜出来的歌曲的数量的期望.接下来n行,每行有两个数字第一个pi代表在歌曲结束前你猜出来的概率,第二个ti代表这首歌最多播放ti秒,在t秒之后你百分比之百能猜出来歌曲.最后输出m秒之后猜出来的歌曲的期望. 我们设dp[i][j]表示枚举到第i首歌,所用时间恰好为j的期望. dp[i][j] 可以由状态dp[i-1][j-ti],dp[i-1][j-ti+1],......,dp[i-1][j-1]转移过来

Codeforces 498B. Name That Tune 概率DP+优化

dp[i][j] 第i首歌在第j分钟听出来..... 一般情况下: dp[i][j]= dp[ i-1] [ j-k ] * p[i] * (1-p[i])^(k-1) 当k==t[i]时,一定可以听出来还要另加上 dp[ i-1] [ j-k ]*(1-p[i])^k 需要维护一段dp[i-1][k]的和,将时间复制度降到O(n^2) B. Name That Tune time limit per test 1 second memory limit per test 256 megabyt

怎么用HD Tune检测硬盘坏道

HD Tune软件不仅小巧而且很易使用,是一款检测电脑硬盘的优良工具.不仅是电脑硬盘,包括移动硬盘在内一样可以检测.那么,如何使用HD Tune呢?如何使用HD Tune检测磁盘坏道呢? 工具/原料 HD Tune软件一枚 使用HD Tune检查硬盘坏道 1.百度搜索下载HD Tune软件,注意:尽量选择系统之家官网上下载这类软件,因为系统之家上的软件不会捆绑的流氓软件 2.软件打开之后,界面如图,最上方显示硬盘的厂家信息,图示红色遮挡区 3.点击选项卡切换至错误扫描,如图,然后在红框位置,尽量

Performing a Quick Tune

18.2.6 Performing a Quick Tune To tune a single SQL statement, the QUICK_TUNE procedure accepts as its input a task_name and a SQL statement. The procedure creates a task and workload and executes this task. There is no difference in the results from

caffe简易上手指南(三)—— 使用模型进行fine tune

之前的教程我们说了如何使用caffe训练自己的模型,下面我们来说一下如何fine tune. 所谓fine tune就是用别人训练好的模型,加上我们自己的数据,来训练新的模型.fine tune相当于使用别人的模型的前几层,来提取浅层特征,然后在最后再落入我们自己的分类中. fine tune的好处在于不用完全重新训练模型,从而提高效率,因为一般新训练模型准确率都会从很低的值开始慢慢上升,但是fine tune能够让我们在比较少的迭代次数之后得到一个比较好的效果.在数据量不是很大的情况下,fin

FFmpeg X264的preset和tune

来源:http://blog.csdn.net/daixinmei/article/details/51886850 鉴于x264的参数众多,各种参数的配合复杂,为了使用者方便,x264建议如无特别需要可使用preset和tune设置.这套开发者推荐的参数较为合理,可在此基础上在调整一些具体参数以符合自己需要,手动设定的参数会覆盖preset和tune里的参数. --preset的参数主要调节编码速度和质量的平衡,有ultrafast.superfast.veryfast.faster.fast

使用 Shark 来对你的 iPhone 应用进行性能调优(Using Shark to Performance Tune Your iPhone App)

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 使用 Shark 来对你的 iPhone 应用进行性能调优Using Shark to Performance Tune Your iPhone

How to tune hyperparameters with Python and scikit-learn?

Hyperparameter Optimization In the context of machine learning, hyperparameter optimization or model selection is the problem of choosing a set of hyperparameters[when defined as?] for a learning algorithm, usually with the goal of optimizing a measu

codeforces Name That Tune (概率dp)

题意: D - Name That Tune Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 499D Appoint description:  System Crawler  (2015-01-05) Description It turns out that you are a great fan of rock b