zoukankan      html  css  js  c++  java
  • 2.6

    T1:

    我们发现,答案就是每一条边的期望相加

    然后就只要对每一条边单独算期望就好了

    至于怎么算,那么我们可以分6种讨论:

    px<=qy 全部都可以 

    py<=qx 全都不行

    如果区间有相交,那么它的期望就是每一段的期望*长度最后/总长度

    然后就是每一段期望怎么求:

    然后如果一段是全部在q之前,那么就是1

    如果在后面,那么就是0

    然后如果在中间的就是(首+尾)/2

    对于单点,期望就是后面一个能碰到的长度/总长度

    详细来说见代码:

    il double zhi(double x,int y)
    {
        return max((p[y]-x)/(p[y]-q[y]),0.0);
    }
    il double calc(int x,int y)
    {
        if(p[x]<=q[y]) return 1;
        if(p[y]<=q[x]) return 0;
        double lx=p[x]-q[x],ly=p[y]-q[y];
        if(q[y]<=q[x]&&p[x]<=p[y]) return (zhi(q[x],y)+zhi(p[x],y))/2.0;
        if(q[x]<=q[y]&&p[x]<=p[y]) return ((q[y]-q[x])*1.0+(1.0+(zhi(p[x],y)))/2.0*(p[x]-q[y]))/lx;
        if(q[y]<=q[x]&&p[y]<=p[x]) 
        {
        //    printf("%lf %lf %lf
    ",zhi(q[x],y),zhi(p[y],y),p[y]-q[x]);
            return ((zhi(q[x],y)+zhi(p[y],y))/2*(p[y]-q[x]))/lx;
        }
        if(q[x]<=q[y]&&p[y]<=p[x]) return ((q[y]-q[x])*1.0+(p[y]-q[y])*0.5)/lx;
    }

    T2:

    枚举所有方法,复杂度尾组合级,没分


    T3:

    直接爆搜时间在l~r的联通快,20分

  • 相关阅读:
    Ubuntu 侧边栏和顶栏设置
    ubuntu 下安装微软字体和 console
    vim 的 auto-pairs 设置
    linux上的常用的一些操作
    断点模式
    GIT(git)简单操作
    制表符 的用法
    如何解决ASCII 字符显示不出来的情况
    01_js 快速入门
    神代码,结束进程神方法
  • 原文地址:https://www.cnblogs.com/shenbear/p/12269847.html
Copyright © 2011-2022 走看看