XiaoHuang's Space
XiaoHuang's Space
XiaoHuang
May the force be with you.
『题解』洛谷P4936 Agent1
Posted: Dec 11, 2019
Last Modified: Jan 22, 2020
This article was last modified days ago. The content of this post may be outdated!

Portal

Portal: Luogu

Description

某地的ENLIGHTENED总部有$N$个Agent,每个Agent的能力值互不相同,现在ENLIGHTENED行动指挥想要派出$A, B$两队Agent去参加XM大战。但是参加大战的两个队伍要满足两个要求:

  1. $A$队中能力最大的Agent的能力值要小于$B$队能力最弱的Agent的能力值。

  2. $A, B$两队都要有人参战。

并不一定所有的Agent都要去参加XM大战的,心急的ENLIGHTENED行动指挥想知道有多少种安排Agent参加大战的方案。由于答案可能很大,所以只需要你求出答案模$(10 ^ 9 + 7)$的值就可以了。

Input

输入仅一行,为一个整数$N$。

Output

输出答案模$(10 ^ 9 + 7)$的值。

Sample Input1

3

Sample Output1

5

Sample Input2

6

Sample Output2

129

Solution

根据题意,我们要取两组数,使$A$组的最大值小于$B$组的最小值,那么我们在一个有序的数列(不妨设为$1, 2, 3, \cdots , n$)里,我们可以取一个数$p$,表示分界线(不妨把它放在$A$组),$A$组的取数范围就是$p$以及$p$左边的所有数,$B$组的取数范围就是$p$右边的所有数,因此当$p = i$时$A$组取数的方案总数就是$2 ^ {i - 1}$(前面的每个数要么取,要么不取),而$B$组取数的方案数就是$2 ^ {n - i} - 1$(为什么要减$1$,因为不允许$B$队没有人参战,而我们把$p$归入$A$队,因此$A$组不会空)。我们用代数的形式表示出来:

$$\begin{aligned} \text{答案} & = \sum^{n}_{i = 1}{2 ^ {i - 1} \times (2 ^ {n - i} - 1)} \\ & = \sum^{n}_{i = 1}{2 ^ {n - 1} - 2^{i - 1}} \\ & = n \times 2 ^ {n - 1} - \sum^{n}_{i = 1}{2 ^ {i - 1}} \\ & = n \times 2 ^ {n - 1} -\sum^{n - 1}_{i = 0}{2 ^ i} \\ & = n \times 2 ^ {n - 1} - (2 ^ 0 + \sum^{n - 1}_{i = 1}{2 ^ i}) \\ & = n \times 2 ^ {n - 1} - (1 + 2 ^ n - 2) \\ & = n \times 2 ^ {n - 1} - 2^ n + 1 \\ & = n \times 2 ^ {n - 1} - 2 \times 2 ^ {n - 1} + 1 \\ & = (n - 2) \times 2 ^ {n - 1} + 1 \end{aligned}​$$

于是我们就可以直接通过快速幂直接求出答案了。

Code

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

using namespace std;

typedef long long LL;
const int mod = 1000000007;
LL n;
inline LL power(LL x, LL p) {//快速幂
    LL ret = 1;
    for (; p; p >>= 1) {
        if (p & 1) ret = ret * x % mod;
        x = x * x % mod;
    }
    return ret;
}
int main() {
    scanf("%lld", &n);
    printf("%lld\n", ((n - 2) % mod * power(2, n - 1) % mod + 1) % mod);//公式
    return 0;
}
Article License: CC BY-NC-ND 4.0
Article Author: XiaoHuang
  1. 1. Portal
  2. 2. Description
  3. 3. Input
  4. 4. Output
  5. 5. Sample Input1
  6. 6. Sample Output1
  7. 7. Sample Input2
  8. 8. Sample Output2
  9. 9. Solution
  10. 10. Code
Newer Post
『题解』洛谷P5436 【XR-2】缘分
Older Post
『题解』洛谷P3958 奶酪
Buy me a beer?
-->
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×