zoukankan      html  css  js  c++  java
  • HDU4336 Card Collector

    前置芝士——minmax容斥

    [max{S}=sum_{Tsubseteq S}(-1)^{left|T ight|+1}min{T} ]

    [min{S}=sum_{Tsubseteq S}(-1)^{left|T ight|+1}max{T} ]

    思路

    在dummy的帮助下勉强看了看minmax容斥
    感觉是个神奇的东西,扩展根本没有看懂XD
    然后这题就是板子了,minmax套上期望好像也很可做

    [E(max{S})=sum_{Tsubseteq S}(-1)^{left|T ight|+1}E(min{T}) ]

    (max{S})理解成全集中出现最多个(每个都出现),(min{T})理解成T集合中出现最少(就是从中获得一个),然后T就是T集合中的物品的概率之和
    然后期望的量等于1/全出现的期望
    dfs枚举集合即可

    代码

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    double p[40],ans;
    int n;
    void dfs(int num,double t,int opt){
        if(num==n){
            if(t)
                ans+=1.0*opt/t;
            return;
        }
        dfs(num+1,t,opt);
        dfs(num+1,t+p[num+1],-opt);
    }
    int main(){
        while(scanf("%d",&n)==1){
            ans=0;
            for(int i=1;i<=n;i++){
                scanf("%lf",&p[i]);
            }
            dfs(0,0,-1);
            printf("%.4lf
    ",ans);
        }
        return 0;
    }
    
  • 相关阅读:
    VBA trouble
    深入浅出Automation Anywhere
    sqlserver--install/uninstall
    linux遇到的问题
    Java并发编程:线程池的使用(转载)
    java——线程
    关于项目管理工具 maven
    从xml文件取值
    jquery
    小结-9.20
  • 原文地址:https://www.cnblogs.com/dreagonm/p/10445267.html
Copyright © 2011-2022 走看看