Processing math: 11%

[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?

posted @   皮皮刘  阅读(61)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示