题意

$$g_m(n)=\begin{cases}
& g_m(i) = 0,     \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0 \leq i \leq m\\
& g_m(i) = i-1 + \frac{1}{i}\sum _{j=1}^i(g_m(j) + g_m(i-j)), \ \  i > m\\
\end{cases}$$

现给出 $n$ 和 $m$,求 $g_m(n)$ 模 $1000000007$.

分析

当 $n>m$ 时,易知 $a_n = n-1 + \frac{2}{n} S_{n-1}$,

即 $S_n - S_{n-1} = n-1 + \frac{2}{n} S_{n-1}$,

变形得 $\frac{S_n}{(n+1)(n+2)} = \frac{n-1}{(n+1)(n+2)} + \frac{S_{n-1}}{n(n+1)}$.

令 $b_n = \frac{S_n}{(n+1)(n+2)}$,得 $b_n = \frac{n-1}{(n+1)(n+2)} + b_{n-1}$,

变形 $b_n - b_{n-1} = \frac{3}{n+2} - \frac{2}{n+1} = 2(\frac{1}{n+2}-\frac{1}{n+1}) + \frac{1}{n+2}$,

根据裂项相消得 $b_n - b_m = 2(\frac{1}{n+2} - \frac{1}{m+2}) + \frac{1}{m+3} + \frac{1}{m+4}+...+\frac{1}{n+2}$,

即 $b_n = 2(\frac{1}{n+2} - \frac{1}{m+2}) + S(n+2)-S(m+2)$.

其中 $S(n)$ 表示前 $n$ 个倒数和,可以分段打表。

( $1e4$ 的表虽然不会超内存限制,但是会超代码长度限制www,最后改成2000

#include<bits/stdc++.h>
using namespace std; typedef long long ll;
const ll mod = ;
const int maxn = 1e9 + ;
const int siz = ; //
int f[maxn/siz+] = {{,,,,,,,...} //省略了
ll n, m; ll qpow(ll a, ll b, ll p)
{
ll ret = ;
while(b)
{
if(b&) ret = ret * a % p;
a = a * a % p;
b >>= ;
}
return ret;
} ll inv(ll n)
{
return qpow(n, mod-, mod);
} ll S(ll n)
{
int k = n / siz; //printf("%d\n", k);
ll tmp = f[k];
for(int i = k*siz+;i <= n;i++) tmp = (tmp + inv(i)) % mod;
return tmp;
} int main()
{
int T;
scanf("%d", &T);
while(T--)
{
scanf("%lld%lld", &n, &m);
ll bn = (*(inv(n+) - inv(m+)) + S(n+) - S(m+)) % mod;
ll bn_1 = (*(inv(n+) - inv(m+)) + S(n+) - S(m+)) % mod;
ll sn = (n+) * (n+) % mod * bn % mod;
ll sn_1 = n * (n+) % mod * bn_1 % mod;
printf("%lld\n", (sn - sn_1 + *mod) % mod);
}
}

参考链接:https://blog.csdn.net/baiyifeifei/article/details/99892190

2019HDU多校第九场 Rikka with Quicksort —— 数学推导&&分段打表的更多相关文章

  1. 2018多校第九场1010 (HDU6424) 数学

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6424 解法:找规律.因为最多三项,a1^a2^a3可以拆成(a1+2)+(a2+1)*a3,然后建成数 ...

  2. 218多校第九场 HDU 6424 (数学)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6424 题意:定义f(A) = log log log log …. (A个log) n ,g[A,B, ...

  3. 2019HDU多校第一场1001 BLANK (DP)(HDU6578)

    2019HDU多校第一场1001 BLANK (DP) 题意:构造一个长度为n(n<=10)的序列,其中的值域为{0,1,2,3}存在m个限制条件,表示为 l r x意义为[L,R]区间里最多能 ...

  4. 【杂题总汇】HDU2018多校赛第九场 Rikka with Nash Equilibrium

    [HDU2018多校赛第九场]Rikka with Nash Equilibrium 又是靠这样一道题擦边恰好和第两百名分数一样~愉快

  5. 2018 Multi-University Training Contest 9 杭电多校第九场 (有坑待补)

    咕咕咕了太久  多校博客直接从第三场跳到了第九场orz 见谅见谅(会补的!) 明明最后看下来是dp场 但是硬生生被我们做成了组合数专场…… 听说jls把我们用组合数做的题都用dp来了遍 这里只放了用组 ...

  6. 2019年牛客多校第一场B题Integration 数学

    2019年牛客多校第一场B题 Integration 题意 给出一个公式,求值 思路 明显的化简公式题,公式是分母连乘形式,这个时候要想到拆分,那如何拆分母呢,自然是裂项,此时有很多项裂项,我们不妨从 ...

  7. 杭电多校第九场 hdu6425 Rikka with Badminton 组合数学 思维

    Rikka with Badminton Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/O ...

  8. Rikka with Game[技巧]----2019 杭电多校第九场:1005

      Rikka with Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Othe ...

  9. 杭电多校第九场 hdu6424 Rikka with Time Complexity 数学

    Rikka with Time Complexity Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K ( ...

随机推荐

  1. C之推栈溢出原因

    https://blog.csdn.net/weixin_36194037/article/details/78871468

  2. WUSTOJ 1338: The minimum square sum(Java)

    题目链接:1338: The minimum square sum Description Given a prime p(p<108), you are to find min{x2+y2}, ...

  3. 简单理解JavaScript原型链

    简单理解原型链 什么是原型 ? 我是这样理解的:每一个JavaScript对象在创建的时候就会与之关联另外一个特殊的对象,这个对象就是我们常说的原型对象,每一个对象都会从原型"继承" ...

  4. create-react-app中的一些功能配置

    1. 根路径别名@ 1. npm run eject调出配置文件.找到webpack.config.js,搜索到,alias,在下面添加一行键值对'@':paths.appSrc, alias: { ...

  5. hdu 6661 Acesrc and String Theory (后缀数组)

    大意: 求重复$k$次的子串个数 枚举重复长度$i$, 把整个串分为$n/i$块, 如果每块可以$O(1)$计算, 那么最终复杂度就为$O(nlogn)$ 有个结论是: 以$j$开头的子串重复次数最大 ...

  6. 在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字)

    原文:在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  7. Centos6 Connect WiFi

    Centos6 Connect WiFi // 安装 wireless tools yum install wireless-tools dkms pciutils lsusb // 使用wlan命令 ...

  8. S3C2440 gpio

    WATCHDOG TIMER 原理图 手册 举例 start.S .globl _start _start: /* 关看门狗 */ /* 往WTCON(0x53000000)写0 */ ldr r0, ...

  9. bootstrap table分页limit计算pageIndex和pageSize

    由于bootstrap table的js无法直接获取pageSize和pageIndex的值,只能通过limit进行计算.

  10. lumen添加自定义异常

    在公用工具类写异常类 <?php namespace Brady\Tool\Exception; use Brady\Tool\Constant\ErrorMsg; use \Exception ...