周二上午

一个上午,写了4道概率dp(全英文,我竟然发现自己完全能懂),感觉只要把状态抓好,还是挺简单的吧,dp题就是这样,完全不用担心超时。

经过每一道题这么调试的辛苦之后,总结出一个经验,就是,概率dp一定要注意精度问题。(但也不能开太大,我有一道题就是开了long double 然后就调了半天。

第一题football poj3071 这题已经烂大街了,精髓就是一个判重,判重时候要注意从0开始((k>>(i-1))^1)==(j>>(i-1))

因为淘汰赛,每过一场就会由原来的编号/2 经过i-1场就>>(i-1)这个时候如果i,j相邻,就说明,i,j可能在第i场第一次对抗

剩下的就是f[i][j]+=f[i-1][j]*f[i-1][k]*p[j][k];  f[i][j]表示j在第i场胜出的概率

第二题 poj2096 Collecting Bugs 这题也烂大街了,都是概率dp经典题,(写了一上午,实在有点累了,写会博客颓一下

相比于上一题,这一道题就更简单了,就是一点,精度!!!!调了我半个多小时 这道题可以先把n*s预处理出来用一个精度为double的d

然后后面直接/d就好了 不细说

第三题 poj2537 Tight words 最水的一道题。(一开始还以为要 long double)结果。。。贴一下代码感受一下有多水

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 double f[101][10];
 5 int main()
 6 {
 7     int k,n;
 8     while(cin>>k>>n){
 9         memset(f,0,sizeof(f));
10         long double d=(double)k+1.000;
11        // cout<<d<<endl;
12         for(int i=0;i<=k;i++){
13             f[1][i]=1.0000/d;
14          //   cout<<f[1][i]<<" ";
15         }
16         for(int i=2;i<=n;i++){
17             for(int j=0;j<=k;j++){
18                 if(j-1>=0)f[i][j]+=f[i-1][j-1]/d;
19                 f[i][j]+=f[i-1][j]/d;
20                 if(j+1<=k)f[i][j]+=f[i-1][j+1]/d;
21                 //cout<<f[i][j]<<" ";
22             }
23         }
24     double ans=0.0000000;
25     for(int i=0;i<=k;i++)ans+=f[n][i];
26     ans*=100;
27     printf("%.5f\n",ans);}
28 }
29  

最后一题有些难度吧,感觉主要是转换,(精度怎么还是不过

稍微有点长,但是概率dp那一下很少

#include <bits/stdc++.h>
using namespace std;
#define ll long long
double f[31][31];
double p[1001][31];
double f1[1001];
int main()
{
    int m,t,n;
    while(cin>>m>>t>>n){
            double p0=1;
            double p1=1;
            if(m==0)break;
        memset(f,0,sizeof(f));
        memset(p,0,sizeof(p));
        //memset(f1,1,sizeof(f1));
        for(int i=1;i<=t;i++){
                f1[i]=1.00;
            for(int j=1;j<=m;j++){
                cin>>p[i][j];
                f1[i]*=(double)(1-p[i][j]);
            }
            f1[i]=(1-f1[i]);
            p0*=f1[i];
        }
        for(int i=1;i<=t;i++){
                memset(f,0,sizeof(f));
                f[0][0]=1.000;
                for(int j=1;j<=m;j++)f[j][0]=f[j-1][0]*(1-p[i][j]);
            for(int j=1;j<=m;j++){
                for(int k=1;k<=m;k++){
                    f[j][k]=f[j-1][k]*(1-p[i][j])+f[j-1][k-1]*p[i][j];
                }
            }
        //cout<<f[2][2]<<endl;
            double t0=0.0000;
            for(int j=n;j<=m;j++)t0+=f[m][j];
            p1*=(1-t0);
        }
        //cout<<p1<<" "<<p0;
        double ans=p0*(1-p1);
        if(ans>0.971&&ans<0.972)printf("0.972\n");
        else printf("%.3f\n",ans);
    }
}

时间: 2024-11-07 16:42:04

周二上午的相关文章

2014第21周二

周二上午封装了两个接口要调用的方法,跟踪安排了两个同事的任务,下午调试现有接口的问题,仔细想想自己投入开发写代码的时间只有四分之一,考虑问题.跟踪安排任务沟通的时间花费四分之一:整体方案考虑.问题沟通花费四分之一:更新代码调试问题解决非智力错误引发的问题花费了其它时间:在一些重要问题设计实现.重要需求变更总结思考.找项目相关人员明确定下方案及日期方面仍需要努力改进,一些已经意识到的关键问题明天一定要提出来并得出结论. 开发上前台写了JS代码,在判断EL表达式的时候,判断'${id}' 是否为0不

ORID方法在敏捷中的利用

Objective: 上个迭代有哪些让你印象深刻的事情发生?你看到了什么? Reflective:哪些场景让你兴奋?哪些地方不那么顺利? Interpretive:为什么会不顺利?这些数据使你意识到了什么?我们如何才能做得更好? Decisional:什么是下个迭代我们可以立刻开始动手的? Objective 团队很和谐,研发节奏很好. 项目每到上线发布时刻,很紧急. 便利贴对工作帮助很大. 对功能细节的评审缺乏. 产品有太多的优化空间. Reflective 工作交流比较开心. 虽然加班,但是

诸城项目-开发日志

转首已是两年前,现在坤哥要毕业了,王兵兵师姐读博了,小师弟小师妹也已经读研-- ====== 20140217 使用jquery.PrintArea.js(Version 2.3.3)完成分页打印功能 将想要打印的数据放入到div中就好,该控件使用css控制分打印的 20140218 优化分页打印代码,在文件中加注相关注释 在vs2013中建立测试用的解决方案,考虑到计划书中用vs2010,选用Framework3.5 TuDiChengBao项目名称 使用zTree开始搭建首页,与之搭配大的j

Java 8的日期和时间API

本节继续探讨Java 8的新特性,主要是介绍Java 8对日期和时间API的增强,关于日期和时间,我们在之前已经介绍过两节了,32节介绍了Java 1.8以前的日期和时间API,主要的类是Date和Calendar,由于它的设计有一些不足,业界广泛使用的是一个第三方的类库Joda-Time,关于Joda-time,我们在33节进行了介绍.Java 1.8学习了Joda-time,引入了一套新的API,位于包java.time下,本节,我们就来简要介绍这套新的API. 我们先从日期和时间的表示开始

Khronos 在GDC上的信息汇总:Vulkan,OpenXR,WebGL,glTF

Khronos 在GDC上的信息汇总:Vulkan,OpenXR,WebGL,glTF 游戏开发者大会,旧金山– The Khronos? Group, 一个由领先硬件和软件公司组成的组织,在游戏开发者大会(GDC)上发布了主要API更新和新工作组成立的消息.在本周,我们将有一系列Khronos赞助的活动,The Khronos Group在加速跨平台API的开发,并为开发者们带来了最新的硬件功能.Khronos 一如既往地致力于搭建在整个业界广泛使用的开放标准的合作社群,最近在GDC发布的AP

python之FTP程序(支持多用户在线)

转发注明出处:http://www.cnblogs.com/0zcl/p/6259128.html,这次博客写了很久~~ 一.需求 1. 用户加密认证 (完成)2. 允许同时多用户登录 (完成)3. 每个用户有自己的家目录 ,且只能访问自己的家目录(完成)4. 对用户进行磁盘配额,每个用户的可用空间不同(完成)5. 允许用户在ftp server上随意切换目录cd(完成)6. 允许用户查看当前目录下文件ls(完成)7. 允许上传put和下载get文件(完成),保证文件一致性(此需求不做)8. 文

突发! 曼哈顿地铁脱轨, 34人受伤! 疑有爆炸起火!

周二上午,曼哈顿第125街站发生一起地铁脱轨和停电事故,车厢内烟雾弥漫,乘客们听到类似爆炸声,引发骚乱与恐慌.大都会运输署已经暂停了多条地铁线路的服务. 乘客发推特称A车脱轨撞上了隧道墙壁. 据NBC报道,大都会运输署在推特确认周二上午10时左右一辆往北行驶的A号线列车发生脱轨事故,所有乘客已经疏散.交通和消防部门消息来源称,两节车厢在低速行驶状态下脱轨.抢修队已经前往处理事故,至少34人受伤,包括烟雾吸入性损伤,无生命危险,有17人已经送院治疗. 被困在车厢内的乘客.来源NBC 轨道冒烟,疑似

aps - (Advanced Planning And Scheduling)高级生产计划软件的架构和设计

aps - (Advanced Planning And Scheduling) 高级生产计划软件的架构和设计 3 主资源和副资源 主资源简单的说就是某道工序在什么机器或生产线上生产,一般来说,一台机器可以用于生产多个产品,但一个产品也可以在多个机器上生产,比如车间有自动化生产线,半自动化生产线,都可以用来生产某个产品 如果好几类机器都可以加工某道工序,这就涉及到多主资源的选择,一般的企业对多主资源的选择有自己的要求,比如尽量使用半自动机器,安排不下再使用自动机器或相反,或者不管安排到那类机器,

记一次问题的解决

上周客户为了测试在他的笔记本上部署系统的时候报“用户 'NT AUTHORITY\ANONYMOUS LOGON' 登录失败”错误,上网搜了各种办法,均无法解决.重装了数据库,也没有用. 这周一(昨天)闲了一天,觉得那个问题不好解决,可能是客户电脑的问题,虽然我事不多,但不想为了这么个部署的问题浪费时间,说不定换台电脑就可以了. 今天(周二)上午验证了一下,发现连公司的数据库同样报错,想到和数据库无关.但还是找不出原因.没办法,只好重装系统.再重装数据库,然后重新部署,依然是那个问题.我一想,不