uva 11637 - Garbage Remembering Exam(概率)

题目链接:uva 11637 - Garbage Remembering Exam

题目大意:大白数里有很详细的题意。

解题思路:对于有序的序列来说,考虑每个位置为有效性的概率。C(2?kn?1?x)?A(2k2k)?A(n?1?xn?1?x)A(n?1n?1)

x为考虑当前位置,然后与该位置距离小于等于k的位置个数。该位置有效的话,则对应的要将原先邻近的2*k个单词放到另外的位置上。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>

using namespace std;
const int maxn = 1e5;

int N, K;
long double frc[maxn+5];

double solve () {
    if (N == 1)
        return 0;

    if (N - 2 * K - 1 <= 0)
        return N;

    double ret = 0;
    for (int i = 1; i <= N; i++) {
        int x = min(K, i - 1)  + min(K, N - i);
        if (N >= x + 2 * K + 1)
            ret += exp(frc[N-1-2*K] + frc[N-1-x] - frc[N-1] - frc[N - 1 - x - 2 * K]);
    }
    return N - ret;
}

int main () {
    int cas = 1;
    frc[0] = 0;
    for (int i = 1; i <= maxn; i++)
        frc[i] = frc[i-1] + log((long double)i);

    while (scanf("%d%d", &N, &K) == 2 && N + K) {
        printf("Case %d: %.4lf\n", cas++, solve());
    }
    return 0;
}

uva 11637 - Garbage Remembering Exam(概率),布布扣,bubuko.com

时间: 2024-08-07 00:17:54

uva 11637 - Garbage Remembering Exam(概率)的相关文章

UVA 11637 - Garbage Remembering Exam(组合概率)

UVA 11637 - Garbage Remembering Exam 题目链接 题意:大概意思是,有n个单词,分别打乱放在一个环形的,一个非环形里面,环形的两个单词距离为顺时针逆时针的最小值,非环形的就是位置的差的绝对值,如果有一对单词,在两个里面的距离都是不大于k,那么这单词为无效单词,问平均会出现多少个无效单词 思路:组合概率,假设在非环形形成了一个随机序列,那么我们给它标号1-n,如果我们能分别算出1-n的有效概率,那么就等于算出了无效概率,那么有效概率等于和它距离大于k的那些位置的所

UVA - 11637 Garbage Remembering Exam (组合+概率)

Little Tim is now a graduate,and is thinking about higher studies. However, he first needs to appear in anexam whose preparation alone includes memorizing the meanings of over 3500words! After going through the list afew times, however, he sees troub

UVA - 11637 Garbage Remembering Exam (组合+可能性)

Little Tim is now a graduate,and is thinking about higher studies. However, he first needs to appear in anexam whose preparation alone includes memorizing the meanings of over 3500words! After going through the list afew times, however, he sees troub

uva 11427 - Expect the Expected(概率)

题目链接:uva 11427 - Expect the Expected 题目大意:你每天晚上都会玩纸牌,每天固定最多玩n盘,每盘胜利的概率为p,你是一个固执的人,每天一定要保证胜局的比例大于p才会结束游戏,若n局后仍没有,就会不开心,然后以后再也不完牌,问说你最多会玩多少个晚上. 解题思路:当j/i ≤ p时有dp(i-1,j) (1-p) + dp(i-1, j-1) p,其他dp(i,j) = 0.Q=∑d(n,i) 列出数学期望公式: EX=Q+2Q(1?Q)+3Q(1?Q)2+- s=

UVA 10529 - Dumb Bones(概率+区间dp)

UVA 10529 - Dumb Bones 题目链接 题意:你试图把一些多米诺骨牌排成直线,然后推倒它们.但是如果你在放骨牌的时候不小心把刚放的骨牌碰倒了,它就会把相临的一串骨牌全都碰倒,而你的工作也被部分的破坏了. 比如你已经把骨牌摆成了DD__DxDDD_D的形状,而想要在x这个位置再放一块骨牌.它可能会把左边的一块骨牌或右边的三块骨牌碰倒,而你将不得不重新摆放这些骨牌. 这种失误是无法避免的,但是你可以应用一种特殊的放骨牌方法来使骨牌更多的向一个方向倒下. 给出你要摆放的骨牌数目,以及放

uva 1636 - Headshot(简单概率问题)

直接扣一枪没有子弹 是条件概率 转一下再扣一枪 是简单事件发生的概率 前者用00的个数除以00和01子串的总数 后者用0的个数除以所有数字的个数 然后换算一下运算方式比较即可 #include<cstdio> #include<cstring> const int maxn = 105; char s[105]; int cnt0,cnt1,cnt2,cnt3; int main() { while(scanf("%s",s+1)!=EOF) { cnt0=0;

UVA 11762 - Race to 1(概率)

UVA 11762 - Race to 1 题意:给定一个n,每次随即选择一个n以内的质数,如果不是质因子,就保持不变,如果是的话,就把n除掉该因子,问n变成1的次数的期望值 思路:tot为总的质数,cnt为质因子个数,那么f(n)=(1?cnt/tot)?f(n)+∑f(n/prime)?(1/tot),然后利用记忆化搜索去做即可 代码: #include <stdio.h> #include <string.h> const int N = 1000005; int t, n,

UVA 11427 - Expect the Expected(概率递推期望)

UVA 11427 - Expect the Expected 题目链接 题意:玩一个游戏,赢的概率p,一个晚上能玩n盘,如果n盘都没赢到总赢的盘数比例大于等于p,以后都不再玩了,如果有到p就结束 思路:递推,dp[i][j]表示玩i盘,赢j盘的概率,那么一个晚上玩了n盘小于p的概率递推式为: dp(i,j)=dp(i?1,j)?(1?p)+dp(i?1,j?1)?p 总和为Q=dp(n,0)+dp(n,1)+...+dp(n,x)(x/n<p) 那么每个晚上失败的概率Q就求出来了,那么平均玩的

UVA 10828 - Back to Kernighan-Ritchie(概率+高斯消元)

UVA 10828 - Back to Kernighan-Ritchie 题目链接 题意:给图一个流程图,有结点的流程,每次进入下一个流程概率是均等的,有q次询问,求出每次询问结点的执行期望 思路:高斯消元,每个结点的期望等于所有前趋结点的期望/出度的和,由于存在无限循环的情况,不能直接递推,利用高斯消元去做,判断无解的情况既为无限循环,注意如果一个式自xi为0,但是xn也为0,xi值应该是0,表示无法到达 代码: #include <cstdio> #include <cstring