Description

  • TTT组数据,T≤1e5,n≤1e7T\le1e5,n\le1e7T≤1e5,n≤1e7

Solution

  • 好家伙,最下面的数据范围居然是这样的:

  • 直接以为卡特兰数乘上个组合数就能切了(
  • 然而数据范围在读入的地方

  • 这个看起来1e71e71e7的O(1)O(1)O(1)查询多半是递推吧。

  • 因此写出dp,f(n),g(n)f(n),g(n)f(n),g(n)分别表示长度为nnn合法方案数以及贡献和。

  • 讨论第一个是′x′'x'′x′还是′(′'('′(′,容易得到转移,以及对应的生成函数:
    F(x)=1+xF(x)+x2F2(x)F(x)=1+xF(x)+x^2F^2(x) F(x)=1+xF(x)+x2F2(x)

    G(x)=xF(x)+xG(x)+2x2G(x)F(x)G(x)=xF(x)+xG(x)+2x^2G(x)F(x) G(x)=xF(x)+xG(x)+2x2G(x)F(x)

  • 暴力解:

F(x)=1−x−1−2x−3x22xF(x)=\frac{1-x-\sqrt{1-2x-3x^2}}{2x} F(x)=2x1−x−1−2x−3x2​​

G(x)=1−x1−2x−3x2−12xG(x)=\frac{\frac{1-x}{\sqrt{1-2x-3x^2}}-1}{2x} G(x)=2x1−2x−3x2​1−x​−1​

  • 关于F(x)F(x)F(x)的求根公式为什么是负号,考虑后面的东西开根是1−x+...1-x+...1−x+...,而F(x)F(x)F(x)没有负数次幂,因此分子部分常数项和一次项都被消掉了,所以要是负号(直接计算用洛必达法则计算极限也可以证明?)

  • 那么问题在于求(1−2x−3x2)−0.5(1-2x-3x^2)^{-0.5}(1−2x−3x2)−0.5,剩下的都可以线性变换。

  • 套用短多项式求幂的方法:

    • F(x)=Gk(x)F(x)=G^k(x)F(x)=Gk(x),lnF(x)=klnG(x)ln\ F(x)=k\ ln\ G(x)ln F(x)=k ln G(x)

    • 求导得
      F′(x)F(x)=kG′(x)G(x)\frac{F'(x)}{F(x)}=k\frac{G'(x)}{G(x)} F(x)F′(x)​=kG(x)G′(x)​

      F′(x)G(x)=kG′(x)F(x)F'(x)G(x)=kG'(x)F(x) F′(x)G(x)=kG′(x)F(x)

    • 那么考虑第nnn项的系数,左边右边分别卷在一起,但是左边由于求了导数,所以涉及到了f(n+1)f(n+1)f(n+1),又由于G(x)G(x)G(x)是常数项的,所以系数相当于O(1)O(1)O(1)算出,可以从f(1..n)f(1..n)f(1..n)推到f(n+1)f(n+1)f(n+1)。

    • 最后是常数项,一般根据题意猜出?这题由于是在整数域内开根号,常数项应该是正负1吧。

  • 可以化简为:

(n+1)ansn−3n∗ansn−1−(n+3)ansn−2+(3n−6)ansn−3=0(n+1)ans_n-3n*ans_{n-1}-(n+3)ans_{n-2}+(3n-6)ans_{n-3}=0 (n+1)ansn​−3n∗ansn−1​−(n+3)ansn−2​+(3n−6)ansn−3​=0

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define maxn 10000005
#define ll long long
#define mo 998244353
using namespace std;int T,n,i,j,k;
ll f[maxn],inv[maxn];int main(){freopen("ceshi.in","r",stdin);
//  freopen("power.in","r",stdin);
//  freopen("power.out","w",stdout);inv[0]=inv[1]=1;for(i=2;i<maxn;i++) inv[i]=inv[mo%i]*(mo-mo/i)%mo;f[1]=1,f[2]=2;for(i=3;i<maxn-1;i++) f[i]=(f[i-1]*3*i+f[i-2]*(i+3)+f[i-3]*(6-3*i))%mo*inv[i+1]%mo;scanf("%d",&T);while (T--){scanf("%d",&n);printf("%lld\n",(f[n]+mo)%mo);}
}

JZOJ6828. 【2020.10.25提高组模拟】幂相关推荐

  1. 6810. 【2020.10.05提高组模拟】路哥

    Description Input Output Sample Input Sample Input1 3 1 1 1 1 1 2 2 3 Sample Input2 9 4 0 0 1 4 1 2 ...

  2. JZOJ6893. 【2020.11.25提高组模拟】小 T 与灵石(stone)题解

    这道题需要转化,换根和卡常. 首先将集合中的点拉出来,找它们的直径 不需要什么虚树,随便挑一个集合里的点为根,做一遍dfs,找最远点x(要在集合里),以x为根重复以上操作,找到最远点y,x-y就是题解 ...

  3. 6846. 【2020.11.02提高组模拟】旅人1970

    Description Input Output Sample Input Sample Input1 25 4 4 1 2 3 2 1 1 1 2 Sample Output Sample Outp ...

  4. 6848. 【2020.11.03提高组模拟】融入社会的计划

    Description Input Output 一行一个整数表示答案. upd:  无解输出-1. Sample Input Sample Input1 6 6 13 11 1 1 4 5 5 Sa ...

  5. jzoj6824-[2020.10.17提高组模拟]英雄联盟【期望】

    正题 题目大意 开始暴击率为xxx,每次失败后都会增加xxx,成功后重置,然后求攻击1010610^{10^6}10106次后的暴击次数除以1010610^{10^6}10106 解题思路 定义ans ...

  6. gmoj 6860. 【2020.11.14提高组模拟】鬼渊传说

    题目 Time Limits: 1000 ms Memory Limits: 518400 KB 简要题意 给出一个网格图,每个格子有黑白二色,求有多少个子矩形满足将其挖出来后恰好有一个黑色四连通块且 ...

  7. jzoj6826-[2020.10.17提高组模拟]隔膜【博弈论】

    正题 题目大意 n∗nn*nn∗n的矩形,每一个人操作时如果棋盘上有一个k∗kk*kk∗k的矩形空地就可以选择一个点堵上.如果没有就失败了,求必胜方. 解题思路 如果场地上有一个位置堵上后即可堵上所有 ...

  8. 【2020.11.30提高组模拟】剪辣椒(chilli)

    剪辣椒(chilli) 题目描述 在花园里劳累了一上午之后,你决定用自己种的干辣椒奖励自己. 你有n个辣椒,这些辣椒用n-1条绳子连接在一起,任意两个辣椒通过用若干个绳子相连,即形成一棵树. 你决定分 ...

  9. 【2020.12.03提高组模拟】袋鼠

    题目 题目描述 你知道吗?乌拉圭的人口有345.7万,同时,仅澳大利亚就有4700万只袋鼠. 袋鼠决定入侵乌拉圭.袋鼠们将在平原上布阵,平原被划分成 n×mn \times mn×m 的网格. 每个格 ...

最新文章

  1. UNIX Domain Socket(UDS)是什么?同一台主机间进程间通信
  2. 敏捷开发的根本矛盾是什么?从业十余年的工程师在思考
  3. Zabbix监控agent
  4. python截图拼接_Python实现屏幕截图有两种方式 - 小众知识
  5. 我说我了解集合类,面试官竟然问我为啥HashMap的负载因子不设置成1!?
  6. 你应该知道的 CSS 基础知识
  7. linux 通配符与正则表达式
  8. IE无法执行JavaScript解决办法
  9. hdu4009 Transfer water 最小树形图
  10. 如何搭建公司知识库?
  11. 《私募股权基金投资基础知识》---第五章
  12. 采购证书有了解过吗?
  13. 微信群控系统源码的实现原理,核心源码实现,核心框架。
  14. 监控突然显示服务器故障,网络监控出现服务器故障怎么办
  15. 数据结构——栈(栈结构、栈面试题、栈的操作、栈结构实现、进制的转换)
  16. 计算机开机的四个画面,教你修改电脑开机时“欢迎使用”四个字!
  17. 腾讯地图定位 代码
  18. swagger Could not resolve pointer: /definitions/Person does not exist in document
  19. linux开发板lcd按压,嵌入式Linux裸机开发(十五)——LCD
  20. 【CSP-J/S】复赛注意事项

热门文章

  1. 飞思卡尔MC9S12X:CAN发送配置
  2. OpenWrt的日常维护【一】OpenWrt的安装与基础配置
  3. c语言课程设计贪吃蛇报告,贪吃蛇C语言课程设计报告.doc
  4. 在脑袋一侧上猛敲一下
  5. 高仿书旗小说 Flutter 版,支持 iOS、Android
  6. spring boot +word 模板下载
  7. 反汇编(Disassembler) iPhone
  8. 虚幻学习3--使用Quixel创建动画【笔记】
  9. 浏览器模拟网速慢方法
  10. layui框架学习(10:时间线)