首页 > 其他分享 >二十九 4009. 收集卡牌 (数学期望|状压DP)

二十九 4009. 收集卡牌 (数学期望|状压DP)

时间:2024-04-10 14:55:05浏览次数:28  
标签:4009 coins 状压 卡牌 state DP dp

4009. 收集卡牌 (数学期望|状压DP)
image

import java.util.*;

public class Main {
    private static final int N = 16, M = 1 << N;
    private static int n, m;
    private static double[] p = new double[N];
    private static double[][] dp = new double[M][N * 5 + 1];
    
    private static double f(int state, int coins, int r) {
        if (dp[state][coins] >= 0) {
            return dp[state][coins];
        }
        if (coins >= r * m) {
            return dp[state][coins] = 0;
        }
        
        dp[state][coins] = 0;
        for (int i = 0; i < n; i++) {
            if (((state >> i) & 1) != 0) {
                dp[state][coins] += p[i] * (f(state, coins + 1, r) + 1);
            }
            else {
                dp[state][coins] += p[i] * (f(state | (1 << i), coins, r - 1) + 1);
            }
        }
        return dp[state][coins];
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        m = sc.nextInt();
        for (int i = 0; i < n; i++) {
            p[i] = sc.nextDouble();
        }
        for (int i = 0; i < M; i++) {
            Arrays.fill(dp[i], -1);
        }
        System.out.println(String.format("%.10f", f(0, 0, n)));
    }
}

标签:4009,coins,状压,卡牌,state,DP,dp
From: https://www.cnblogs.com/he0707/p/18126023/lanqiaobei29

相关文章

  • 状压dp——Disease Manangement 疾病管理
    题目描述Alas!AsetofD(1<=D<=15)diseases(numbered1..D)isrunningthroughthefarm.FarmerJohnwouldliketomilkasmanyofhisN(1<=N<=1,000)cowsaspossible.IfthemilkedcowscarrymorethanK(1<=K<=D)differentd......
  • [SDOI2009] Bill的挑战 (状压DP)
    [SDOI2009]Bill的挑战题目描述Sheng_bill不仅有惊人的心算能力,还可以轻松地完成各种统计。在昨天的比赛中,你凭借优秀的程序与他打成了平局,这导致Sheng_bill极度的不满。于是他再次挑战你。这次你可不能输。这次,比赛规则是这样的:给出\(N\)个长度相同的字符串(由小写英文......
  • 混辗式混砂机 变速箱 旋耕灭茬机 污水处理 150T液压机 污水处理厂 饺子机 农村生活污
    UHT管式杀菌机说明书混辗式混砂机机械结构设计 论文CAD图纸开题报告毕业设计之专用机床图纸毕业设计推钢机液压图纸毕业设计3吨叉车3进3退变速箱(毕业设计)1G-160型旋耕灭茬机中央传动装置设计(共17张CAD加说明书与侧边传动装置配套污水处理课程设计图集150T液压机设计【10......
  • 2022蓝桥杯大赛软件类国赛真题 卡牌
    importjava.util.Scanner;publicclassMain{staticfinalintN=200005;staticlongn,m;staticint[]a=newint[N];staticint[]b=newint[N];publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in......
  • 状压DP
    CF580D题目链接https://codeforces.com/problemset/problem/580/D题目大意思路令dp[i][j]表示,吃菜状态为i,且最后一道菜为j的最大满足感!代码#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=20;intn,m,t,q;inta[N],b[N*N][N*......
  • 状压dp板子(cf div4 #937)
    #include<bits/stdc++.h>usingnamespacestd;intn;vector<int>v[20];stringa[20],b[20];booldp[500010][20];voiddfs(ints,intnow){dp[s][now]=true;for(autonxt:v[now]){if(s&(1<<nxt))continue;......
  • vue3+threejs新手从零开发卡牌游戏(二十二):添加己方游戏流程(先后手、抽牌、主要阶段、战
    首先在utils/common.ts里定义一些流程相关的变量:constflow=ref([//游戏流程{name:"抽卡阶段"},{name:"主要阶段"},{name:"战斗阶段"},{name:"结束阶段"}])constflowIndex=ref(......
  • 一类哈密顿路径/回路为背景的状压dp
    https://codeforces.com/contest/1950/problem/G在非连通图上找到一条包含点最多的路径,dp数组维护可达性//Problem:G.ShufflingSongs//Contest:Codeforces-CodeforcesRound937(Div.4)//URL:https://codeforces.com/contest/1950/problem/G//MemoryLimit:256......
  • 状压 dp
    引入先看一道例题:(可能r18)有\(N\)个男生和\(N\)个女生。小A喜欢磕CP,现在小A想要磕\(N\)对CP。不过每一个人都有自己的npy,也不是随随便便就能磕成一对。现在小A找到了你,要你求出有多少种磕CP的方式。我们显然可以暴力枚举每一个男生跟谁组CP然后判断是否合法......
  • 状压DP
    状压就是把几个维度压成一个维度,通常是按\(k\)进制来压缩如dp[(1<<1145141919810)]这样相当于开了\(1145141919810\)个只有\(0/1\)的维度,二进制下每一位表示这个维度运行逝世查询一个集合\(s\)的所有子集合扩散行for(inti=s;i<MAXN;i=(i+1)|s......