题解 Agent1(数学)

原题
对于数学题,建模是最重要的

题面简化

1.有 N N N个不重复的数
2.从 N N N个数中取两个非空集合 A A A B B B
3. ∀ a i ∈ A , ∀ b i ∈ B , a i > b i \forall a_i\in A,\forall b_i\in B,a_i>b_i aiA,biB,ai>bi

数据范围

对于 20 % 20\% 20%的数据 N ≤ 10 N\leq10 N10
对于 40 % 40\% 40%的数据 N ≤ 1 0 3 N\leq10^3 N103
对于 60 % 60\% 60%的数据 N ≤ 1 0 5 N\leq10^5 N105
对于 100 % 100\% 100%的数据 N ≤ 1 0 9 N\leq10^9 N109

一看就看出要 O ( 1 ) O(1) O(1) 的时间复杂度,明显是数学题

思路

N ≤ 1 0 3 N\leq10^3 N103

看到n个数不相同,选数和大小相关,就发现需要排序。

N N N个数排成一数列,用 1 , 0 1,0 1,0 表示 取 或 不取 。(只是更直观了些)

因为 ∀ a ∈ A , ∀ b ∈ B , a > b \forall a\in A,\forall b\in B,a>b aA,bB,a>b
所以可以记录 B B B中的最大值、 A A A中的最小值 在数列中的位置,这里设为 i i i j j j,要枚举所有 i < j i<j i<j 的情况。

选定 i , j i,j i,j后,易得
集 合 A 的 选 择 方 案 数 = 2 i − 1 集合A的选择方案数=2^{i-1} A=2i1
集 合 B 的 选 择 方 案 数 = 2 N − j 集合B的选择方案数=2^{N-j} B=2Nj,
则有
∑ i = 1 N − 1 ∑ j = i + 1 N 2 N − ( j − i + 1 ) \sum_{i=1}^{N-1}\sum_{j=i+1}^{N} 2^{N-(j-i+1)} i=1N1j=i+1N2N(ji+1)
快速幂复杂度先忽略我不会算 ,到这里是 O ( n 2 ) O(n^2) O(n2)

N ≤ 1 0 5 N\leq10^5 N105

观察上一个式子,我们可以发现 有的指数是被重复计算的
所以可以换一种枚举方式,枚举 原 i i i j j j 间的不选的数字个数(包括i和j),
设为 k k k ,则 k = j − i + 1 k=j-i+1 k=ji+1
则有
∑ i = 2 N ( N − i + 1 ) ∗ 2 N − i \sum_{i=2}^{N}(N-i+1)*2^{N-i} i=2N(Ni+1)2Ni

∑ i = 1 N − 1 i ∗ 2 i − 1 \sum_{i=1}^{N-1}i*2^{i-1} i=1N1i2i1
连快速幂都不需要,到这里是 O ( n ) O(n) O(n)

N ≤ 1 0 9 N\leq10^9 N109

O ( n ) O(n) O(n) O ( 1 ) O(1) O(1)是极难跨越的一步(废话)

众所周知,
∑ i = 0 n 2 i = 2 n + 1 − 1 \sum_{i=0}^{n}2^{i}=2^{n+1}-1 i=0n2i=2n+11
所以,
∑ i = 1 N − 1 i ∗ 2 i − 1 = ∑ i = 0 N − 2 ( 2 N − 1 − 1 ) − ( 2 i − 1 ) = ( N − 1 ) ∗ 2 N − 1 − 2 N − 1 = ( N − 2 ) ∗ 2 N − 1 − 1 \sum_{i=1}^{N-1}i*2^{i-1}=\sum_{i=0}^{N-2}(2^{N-1}-1)-(2^{i}-1)=(N-1)*2^{N-1}-2^{N-1}=(N-2)*2^{N-1}-1 i=1N1i2i1=i=0N2(2N11)(2i1)=(N1)2N12N1=(N2)2N11
第二步时用了前缀和的思想,之后就很简单地推出来了

复杂度 O ( 1 ) O(1) O(1) ,要加一个快速幂取模

代码

快速幂模板

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值