• [CF838D] Airplane Arrangements


    前言

    第一次用概率做计数题,学到了学到了

    题目

    洛谷(附中文简化题意)

    CF

    讲解

    我们考虑如果出现生气的情况回发生什么?一个人一直走,走到了 (0) 或者 (n+1) 进入迷失域

    诶,我们不妨将这个迷失域表示出来,为了用同一个位置表示,我们:

    还链回环!

    此时我们用 (n+1) 号位置表示迷失域,即不合法状态时会被占据的位置

    显然此时 (n+1) 个位置地位相同,如果最终状态的第 (n+1) 号位置被占据,即不合法

    那么概率为:(frac{m}{n+1})

    那么合法概率为:(1-frac{m}{n+1})

    而这 (n+1) 个位置都是任选,而且有方向,所以最终答案可表示为:

    ((1-frac{m}{n+1})*2^m*(n+1)^m)

    代码

    这代码不要也罢

    //12252024832524
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #define TT template<typename T>
    using namespace std; 
    
    typedef long long LL;
    const int MAXN = 1000005;
    const int MOD = 1e9 + 7;
    int n,m;
    
    LL Read()
    {
    	LL x = 0,f = 1;char c = getchar();
    	while(c > '9' || c < '0'){if(c == '-')f = -1;c = getchar();}
    	while(c >= '0' && c <= '9'){x = (x*10) + (c^48);c = getchar();}
    	return x * f;
    }
    TT void Put1(T x)
    {
    	if(x > 9) Put1(x/10);
    	putchar(x%10^48);
    }
    TT void Put(T x,char c = -1)
    {
    	if(x < 0) putchar('-'),x = -x;
    	Put1(x);
    	if(c >= 0) putchar(c);
    }
    TT T Max(T x,T y){return x > y ? x : y;}
    TT T Min(T x,T y){return x < y ? x : y;}
    TT T Abs(T x){return x < 0 ? -x : x;}
    
    int qpow(int x,int y)
    {
    	int ret = 1;
    	while(y){if(y & 1)ret = 1ll * ret * x % MOD;x = 1ll * x * x % MOD;y >>= 1;}
    	return ret;
    }
    
    int main()
    {
    //	freopen(".in","r",stdin);
    //	freopen(".out","w",stdout);
    	n = Read(); m = Read();
    	Put(((1 - 1ll * m * qpow(n+1,MOD-2)) % MOD * qpow(2*n+2,m) % MOD + MOD) % MOD); 
    	return 0;
    }
    

    后记

    洛谷莫名rk1?

  • 相关阅读:
    C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
    Linq Like
    BS下实现WIN7下Aero效果
    Log4Net使用指南
    Sql 中取小数点后面两位小数.
    微软企业库回滚操作
    C#文件操作
    LinQ To XML——用LinQ查询XML
    Sql Server 字段类型说明
    Blog of the Day:几个中文技术类Blogger Groups
  • 原文地址:https://www.cnblogs.com/PPLPPL/p/14404329.html
Copyright © 2020-2023  润新知