zoukankan      html  css  js  c++  java
  • CF773F

    CF773F [* hard]

    给定 \(N\)\(W\),求解有多少个严格单调递增序列 \(a\) 满足 \(a_n\le W\),长度 \(\le N\) 且满足如下约束:

    \(g\)\(\gcd(a_1, a_2...a_n)\)\(x\)\(a_n/g-n\)\(y\)\(a_n-n\)\(z\)\(a_n/g\),则有 \(x\)\(y\)\(z\) 在模 \(2\) 意义下不相同。

    \(\rm Sol:\)

    不难注意到 \(a_n\) 为偶数,\(g\)\(2^k\),此时 \(a_n/g\) 为奇数,同时 \(n\) 为奇数。

    不妨暴力枚举 \(2^k\),保证 \(a_n\) 可以表示为 \((2m+1)\times 2^k\),同时前 \(1\sim n-1\) 个位置每个位置的权值都应该小于 \(2m+1\),但是实际上应该是 \(k\times 2^k\)

    注意到系数至少为 \(1\),所以首项被强制设为 \(1\)

    考虑这个序列的差分数组,我们在开头补一个 \(1\),那么接下来有 \(n-1\) 个位置,权值上界为 \(2m\),相当于在 \(n-1\) 个位置中分配至多 \(2m\) 个权值,同时由于需要严格单调递增,我们可以先给每个位置分配 \(1\) 的权值,对于剩余的,我们等价于给 \(n\) 个位置分配 \(2m+1-n\) 个权值,可以考虑 Dp,\(f_{i,j}=\sum_{k\le j} f_{i-1,k}\),于是得到计算为 \(\frac{1}{(1-x)^{n}}[x^{2m+1-n}]\),即 \(\binom{2m}{2m+1-n}\)

    于是可以得到答案的计算式:

    \[\sum_{k=1}^{\infty} [2^k\le W] \sum_{n=1}^{N} [n 为奇数]\sum_{j=0}^{W/2^k-1}[j ~\textrm{ is~even}] \binom{j}{j+1-n} \]

    然而模数不是质数,而且非常的小,这意味着我们甚至无法得到逆元...

    稍微变形一下成:

    \[\sum_{k=1}^{\infty} [2^k\le W] \sum_{n=1}^{N} [n 为奇数]\sum_{j=0}^{W/2^k-1}[j ~\textrm{ is~even}] \binom{j}{n-1} \]

    \[\sum_{k=1}^{\infty} [2^k\le W] \sum_{n=0}^{N-1} [n 为偶数]\sum_{j=0}^{W/2^k-1}[j ~\textrm{ is~even}] \binom{j}{n} \]

    交给某些高级科技尝试了一下,发现没有办法计算,所以没办法化简,没办法直接计算,就只能递推/Dp 来解决了。。。

    然而不好做,我们还是回来吧,考虑所求实际上是这个:

    长度为 \(n\) 的序列,其长度为奇数,单调递增,每个元素的取值在 \([1,m]\) 中取,最后一个元素大小为奇数。

    其实是在 \([1,m]\) 中选出 \(n\) 个元素,且最大值为奇数的方案数。

    \(f(a,0/1)\) 为在 \([1,a]\) 中选数,最大值为奇/偶的方案数的生成函数。请注意需要保证 \(x^0\) 前面系数为 \(0\)

    考虑通过倍增得到 \(m\)

    \[f(2a,0)=f(a,0)+(f(a,0)+f(a,1)+1)\times f(a,...) \]

    表示可能都在 \([1,a]\) 内,可能都在 \([a+1,2a]\) 内,可能由跨越部分组成。

    \[f(a+1,0)=f(a,0)+[(a+1) \textrm{~is~even}]x(f(a,0)+f(a,1)) \]

    没了。

  • 相关阅读:
    js-url打开方式
    eclipse删除所有空行
    Oracle重启 error: ora-01034:oracle not available ora-27101:shared memory realm does not exist
    最近面试遇到了高阶函数的概念混乱了
    关于跨域的cookie问题
    二叉树 呜呜
    函数的尾递归
    react context
    二叉树
    dom3级事件
  • 原文地址:https://www.cnblogs.com/Soulist/p/13653633.html
Copyright © 2011-2022 走看看