• Examining the Rooms HDU


    Examining the Rooms

     HDU - 3625 

    题意:n个房间,每个房间里有一把钥匙(等概率),每进到一个房间可以得到钥匙去该钥匙对应的房间,如果当前没有钥匙则可以破门而入(1号房间不能破门而入),不过最多破门而入k次,问成功进入n个房间的总概率。

    明显是求n个元素的i个环排列,i = 1,2,……,k.

    不过要减去第一个房间自环的情况。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 const int mod = 1e9+7;
     5 const int maxn = 21;
     6 ll s1[maxn][maxn], f[maxn];
     7 void init(){
     8     for(int i = 1; i < maxn; i++) {
     9         s1[i][0] = 0;
    10         s1[i][i] = 1;
    11         for(int j = 1; j < i; j++) {
    12             s1[i][j] = (s1[i-1][j-1] + (i-1)*s1[i-1][j]);
    13         }
    14     }
    15     f[1] = 1;
    16     for(int i = 2; i <= 20; i++) {
    17         f[i] = f[i-1] * i;
    18     }
    19 }
    20 int main(){
    21     int n, k;
    22     int t;
    23     scanf("%d", &t);
    24     init();
    25     while(t--) {
    26         scanf("%d %d", &n, &k);
    27         double ans=0;
    28         for(int i = 1; i <= k; i++) ans += (s1[n][i] - s1[n-1][i-1])*1.0 / f[n];
    29         printf("%.4lf
    ", ans);
    30     }
    31 }
    View Code
  • 相关阅读:
    View使用总结
    IPC机制总结
    Activity 启动模式总结
    StrictMode 严格模式
    dumpsys, traceView调试命令
    Monkey命令及调试
    Android Studio使用tips
    Java常用数据结构Set, Map, List
    JavaScript String 小球重力弹回
    JavaScript Array 数组方法汇总
  • 原文地址:https://www.cnblogs.com/yijiull/p/7602066.html
Copyright © 2020-2023  润新知