首页 > 其他分享 >CF838D Airplane Arrangements 题解

CF838D Airplane Arrangements 题解

时间:2023-09-03 20:56:48浏览次数:52  
标签:乘客 题解 long T1 Arrangements Airplane MOD 座位 mod

题意

一架飞机有 \(n\) 个座位排成一列,有 \(m\) 名乘客(\(m \leq n\))依次上飞机。

乘客会选择一个目标座位(两人可以选同一个目标座位),然后选择从前门或者后门上飞机,上飞机后,他们会走到自己的目标座位,如果目标座位已经有人坐了,他们会继续往前走,在走到第一个空位后坐下。如果走到最后还没有找到座位,这名乘客就会生气。

问有多少种登机方案能让所有乘客都不生气。两个登机方案不同当且仅当第 \(i\) 位乘客的目标座位或上飞机走的门不同。

(\(1 \le n,m \le 10^6\))。

题解

将座位 \(1\) 和座位 \(n\) 中间插入一个座位 \(n + 1\) 并相连,使其成为一个环。计算合法的概率。可以发现一个方案不合法当且仅当有人坐到座位 \(n + 1\) 上。

现在问题转化为了有一个长度为 \(n + 1\) 的环,乘客会从前 \(n\) 个位置出现,往一个方向行走,直到有空位后坐下,问第 \(n + 1\) 个位置没有人坐下的概率。其中第 \(n + 1\) 个位置是特殊的导致了很难计算,发现如果有乘客在第 \(n + 1\) 个位置出现,那么第 \(n + 1\) 个位置上在他选定座位后一定有人,所以一定会被计算为不合法,故乘客可以在第 \(n + 1\) 个位置上出现。

那么现在的 \(n + 1\) 个位置已经等价,所以在有 \(m\) 个人坐下的情况下第 \(n + 1\) 个位置上有人的概率即为 \(\dfrac{m}{n + 1}\)。再乘上总的方案数 \(\left(2 \times \left(n + 1\right)^m\right)\) 即可得出最终答案。

Code

#include <bits/stdc++.h>

typedef long long valueType;

constexpr valueType MOD = 1e9 + 7;

template<typename T1, typename T2, typename T3 = valueType>
T1 mul(T1 a, T2 b, const T3 &mod = MOD) {
    return (long long) a * b % mod;
}

template<typename T1, typename T2, typename T3 = valueType>
void Mul(T1 &a, T2 b, const T3 &mod = MOD) {
    a = (long long) a * b % mod;
}

template<typename T1, typename T2, typename T3 = valueType>
T1 pow(T1 a, T2 b, const T3 &mod = MOD) {
    T1 result = 1;

    while (b > 0) {
        if (b & 1)
            Mul(result, a, mod);

        Mul(a, a, mod);
        b = b >> 1;
    }

    return result;
}

int main() {
    valueType N, M;

    std::cin >> N >> M;

    valueType const ans = mul(mul(N + 1 - M, pow(N + 1, MOD - 2)), pow(2 * (N + 1), M));

    std::cout << ans << std::endl;
}

标签:乘客,题解,long,T1,Arrangements,Airplane,MOD,座位,mod
From: https://www.cnblogs.com/User-Unauthorized/p/solution-CF838D.html

相关文章

  • 【题解】P2900 [USACO08MAR] Land Acquisition G
    题目链接:P2900[USACO08MAR]LandAcquisitionG我们通过题目可以得出一个较为清晰的结论:我们将所有的矩形排列起来,可以发现最后被完全包含在另一个矩形内的矩形是没有意义的。这样的话我们得到的所有矩形的并是呈阶梯状的,如下图:其中,中间的浅蓝色的边是没有意义的然后我......
  • [ABC318G] Typical Path Problem 题解
    题意给定一个\(N\)个节点和\(M\)条边组成的简单无向联通图,给定三个节点\(A,B,C\),求是否存在一条简单路径满足\(A\rightarrowB\rightarrowC\)。(\(3\leN,M\le2\times10^5\))。题解因为简单路径要求每个节点至多经过一次,故不存在合法的简单路径当且仅当存在一个......
  • 【动态规划】“新手动态规划合集”题解
    动态规划三要素阶段,状态,决策动态规划经典模型LIS(最长上升子序列)给定长度为\(N\)的序列\(A[i]\),求出其最长上升子序列的长度。(以不严格上升为例)阶段:已经处理的序列长度\(i\)状态:\(f[i]\)表示以\(A[i]\)结尾的LIS长度转移\[f[i]=\max\limits_{j\in\left[1,......
  • [ABC318D] General Weighted Max Matching 题解
    [ABC318D]GeneralWeightedMaxMatching题解题意  给定无向有权完全图,求最大权匹配。思路分析  注意到\(n\le16\),我考虑状压DP。  设当前点集\(S\)中最大权匹配的答案是\(f_S\),我们考虑\(S\)中“最后”一个点\(p\)(这里的“最后”一个点是指,在状压表示状态......
  • [ABC318E] Sandwiches 题解
    题意给定一个长度为\(N\)的正整数列\(A=\left(A_1,A_2,\cdots,A_N\right)\),求满足以下条件的正整数三元组\(\left(i,j,k\right)\)的数量:\(1\lei<j<k\leN\);\(A_i=A_k\);\(A_i\neqA_j\)。数据范围:\(3\leN\le3\times10^5\);\(1\leA_i......
  • CF1848B Vika and the Bridge 题解
    CF1848BVikaandtheBridge题解题目大意给个题目传送门吧,感觉题意已经很清楚了题目传送门分析(我不会告诉你我第一眼看过去是二分)因为我们只能改一块木板的颜色,所以可以考虑贪心。大概算了下复杂度,也没有问题。题解我们要去求每种颜色最大距离的最小值,那我们可以先去求......
  • 有关Vue-Cli5.X工程中ESLint组件命名检查问题解决
    个人开发环境简介,工具用的VisualStudioCode,因为每个人的开发环境不同,不可能所有解决方案通用,防止踩坑。PSF:\VueWorkSpace\vue_router_test>node-vv16.12.0PSF:\VueWorkSpace\vue_router_test>npm-v8.1.0PSF:\VueWorkSpace\vue_router_test>npmeslint-v8.1.0......
  • P3604 美好的每一天题解
    传送门好题!首先说这道题的时间复杂度:\(O(26n\sqrtn)\)。因为转移是的常数是\(O(26)\)并非\(O(1)\),这启示我们,看数据范围,不要被O(1)给限制了,O(1)是一般情况,有些题不一般首先,回文串能出现的条件是所有的字符都出现偶数次\(or\)仅有一个字符出现奇数次,所以我们并不关心每个......
  • 【题解】AtCoder Beginner Contest 318(D - Ex)
    赛时过了A-G,Ex仿佛猜到了结论但是完全不懂多项式科技,就炸了。大家好像都秒了A,B,C就不写了。D.GeneralWeightedMaxMatching题目描述:给你一个加权无向完全图,图中有\(N\)个顶点,编号从\(1\)到\(N\)。连接顶点\(i\)和\(j\)的\((i<j)\)的权重为\(D_{i,j}\)。在......
  • P4198 楼房重建题解
    传送门一眼数据结构。考虑线段树,记录该区间能看到最多的建筑数量\(ans_{wz}\)以及看到区间中最大的斜率(或者说,该区间内最后看到的建筑)\(xl_{wz}\)。很明显,假如我现在的修改操作是\((x,y)\),那么会改变\(\log_n\)个节点,即包含\(x\)的节点,考虑如何修改他们的\(ans\)和\(......