TJOI出一堆模板题还玩一堆梗是什么鬼

甲苯先生的字符串(矩阵快速幂)

矩阵快速幂模板题

代码

甲苯先生的滚榜(树状数组、线段树)

最开始想平衡树搞,但是平衡树太难写了

一次答案的查询相当于查询比当前的人AC数多的人数+和当前的人AC数一样多,但是罚时更少的人。前者可以使用树状数组维护每一种AC数量的人数的前缀和,后者使用动态开点线段树,在修改的时候可以一并求出答案。

注意动态开点线段树及时回收无用空间,空间消耗就很少了。

如果不知道怎么开数组就统统开\(5 \times 10^6\)……

代码

唱、跳、rap 和篮球(容斥、生成函数)

律师函警告

其实这道题也挺板子的,但是容斥没学好有点不会qwq

注意到两个不合法序列之间不可能相交,所以可以容斥序列中总共出现了多少个不合法序列,然后计算本质不同的排列的方案数。由指数型生成函数,有\(i\)个不合法序列的序列的贡献是\(n![x^n]\frac{x^{4i}}{i!}(\sum\limits_{j=0}^{a-i} \frac{x^j}{j!})(\sum\limits_{j=0}^{b-i} \frac{x^j}{j!})(\sum\limits_{j=0}^{c-i} \frac{x^j}{j!})(\sum\limits_{j=0}^{d-i} \frac{x^j}{j!})\)。

直接NTT复杂度\(O(n^2logn)\)可以通过,但有复杂度更优的做法:枚举\(i\)时维护\((\sum\limits_{j=0}^{a-i} \frac{x^j}{j!})(\sum\limits_{j=0}^{b-i} \frac{x^j}{j!})\)和\((\sum\limits_{j=0}^{c-i} \frac{x^j}{j!})(\sum\limits_{j=0}^{d-i} \frac{x^j}{j!})\),因为\(i\)每次增大\(1\),这四个式子只会少一项,所以可以\(O(n)\)更新,求出这两个多项式的卷积的其中一项也可以\(O(n)\)。这样复杂度变为\(O(n^2)\)。

代码

大中锋的游乐场(最短路)

分层图最短路模板题

代码

甲苯先生和大中锋的字符串(SAM)

SAM求endpos模板题

代码

甲苯先生的线段树(记忆化搜索)

谢罪警告、328警告

原题:CF750G 禁赛3年警告

应该是TJOI里面最妙的题目了。第一问暴力跳父亲。在下面的叙述中,设第一问的答案为\(len\)。

对于第二问,考虑枚举链上深度最低的点\(x\)、\(x\)的左儿子和右儿子的链深度\(L,R\)(\(L,R\)可以为\(0\)),记作三元组\((x,L,R)\),那么这条链的编号总和的下界是\(x+2x+...+2^Lx+(2x+1)+(4x+2)+...+(2^Rx+2^{R-1}) = (2^{L+1}+2^{R+1}-3)x+2^R-1\),也就是两条链都向左延伸的情况。

对于长度为\(L\)的左链,自底向上,第\(1,2,...,L-1\)个点都可以选择其父亲的左儿子或者右儿子,对于第\(i\)个点,选择右儿子相比选择左儿子编号之和会增加\(\sum\limits_{j=0}^{i-1} 2^j = 2^i-1\),右链同理。那么不难得到整条链的编号和上界是\((2^{L+1}+2^{R+1}-3)x+2^R-1+2^L+2^R-L-R-2\),即两条链都向右延伸。因为\(2^L+2^R-L-R-2 < 2^{L+1}+2^{R+1}-3\),所以\((x,L,R)\)的链编号和上界比\((x+1,L,R)\)的下界还要小,说明每一个\(x\)对应的链编号和范围无交。

那么不难得到枚举了\(L,R\)之后,\(x\)只有可能等于\(\lfloor \frac{len - 2^R+1}{2^{L+1}+2^{R+1}-3} \rfloor\)。接下来我们的任务是给左链和右链的节点分配是其父亲的左儿子还是右儿子。上面提到了第\(i\)个点选择右儿子相比选择左儿子会有\(2^i-1\)的增加量,所以我们需要求出一个长度为\(L-1\)的\(01\)串和长度为\(R-1\)的\(01\)串,\(01\)串的第\(i\)位为\(1\)有\(2^i-1\)的贡献,要求两个串的贡献和等于\(len - ((2^{L+1}+2^{R+1}-3)x+2^R-1)\)。这个可以数位DP,如果懒可以大力记忆化搜索。

至于记搜复杂度反正比数位DP的\(O(d^5)\)快很多就完事了证是不可能会证的

代码

TJOI2019的更多相关文章

  1. [TJOI2019]唱、跳、rap和篮球_生成函数_容斥原理_ntt

    [TJOI2019]唱.跳.rap和篮球 这么多人过没人写题解啊 那我就随便说说了嗷 这题第一步挺套路的,就是题目要求不能存在balabala的时候考虑正难则反,要求必须存在的方案数然后用总数减,往往 ...

  2. [TJOI2019]甲苯先生和大中锋的字符串——后缀自动机+差分

    题目链接: [TJOI2019]甲苯先生和大中锋的字符串 对原串建后缀自动机并维护$parent$树上每个点的子树大小,显然子树大小为$k$的节点所代表的子串出现过$k$次,那么我们需要将$[len[ ...

  3. [TJOI2019]大中锋的游乐场——最短路+DP

    题目链接: [TJOI2019]大中锋的游乐场 题目本质要求的还是最短路,但因为有第二维权值(汽水看成$+1$,汉堡看成$-1$)的限制,我们在最短路的基础上加上一维$f[i][j]$表示到达$i$节 ...

  4. [TJOI2019]甲苯先生的滚榜——非旋转treap

    题目链接: [TJOI2019]甲苯先生的滚榜 要求维护一个二维权值的集合并支持单点修改,用平衡树维护即可. 因为$n\le 10^6$但$m\le 10^5$,所以最多只有$10^5$个人被操作. ...

  5. [TJOI2019]甲苯先生的字符串——矩阵乘法+递推

    题目链接: [TJOI2019]甲苯先生的字符串 我们用一个$26*26$的$01$矩阵记录任意两个字符是否能相邻. 设$f[i][j]$表示处理完前$i$个字符,第$i$个字符为$j$的方案数. 可 ...

  6. [TJOI2019]唱、跳、rap和篮球——NTT+生成函数+容斥

    题目链接: [TJOI2019]唱.跳.rap和篮球 直接求不好求,我们考虑容斥,求出至少有$i$个聚集区间的方案数$ans_{i}$,那么最终答案就是$\sum\limits_{i=0}^{n}(- ...

  7. 【LOJ】#3109. 「TJOI2019」甲苯先生的线段树

    LOJ#3109. 「TJOI2019」甲苯先生的线段树 发现如果枚举路径两边的长度的话,如果根节点的值是$x$,左边走了$l$,右边走了$r$ 肯定答案会是$(2^{l + 1} + 2^{r + ...

  8. [luogu5339] [TJOI2019]唱、跳、rap和篮球(容斥原理+组合数学)(不用NTT)

    [luogu5339] [TJOI2019]唱.跳.rap和篮球(容斥原理+组合数学)(不用NTT) 题面 略 分析 首先考虑容斥,求出有i堆人讨论的方案. 可以用捆绑法,把每堆4个人捆绑成一组,其他 ...

  9. 洛谷P5341 [TJOI2019]甲苯先生和大中锋的字符串

    原题链接P5341 [TJOI2019]甲苯先生和大中锋的字符串 题目描述 大中锋有一个长度为 n 的字符串,他只知道其中的一个子串是祖上传下来的宝藏的密码.但是由于字符串很长,大中锋很难将这些子串一 ...

  10. 洛谷P5338 [TJOI2019]甲苯先生的滚榜

    原题链接洛谷P5338 [TJOI2019]甲苯先生的滚榜 题目描述 甲苯先生在制作一个online judge,他发现做比赛的人们很关心自己的排名(显而易见),在acm赛制的比赛中,如果通过题目数量 ...

随机推荐

  1. 【0521模拟赛】小Z爱数学

    题目描述 小Z想求F(n,k),F(n,k)表示n的所有因数pi中,满足n/pi <= k 的和. 小Z发现还是很水,所以他决定加大难度. 求 小Z还准备了很多个询问.现在你来解决一下吧. 输入 ...

  2. Mac版微信无法安装之始末

    前言 Mac版微信安装不了...纠结了一周时间 ̄□ ̄||... 今天终于可以登录了(虽然还是没有安装到电脑上,但可以使用了) 因为之前也查了很多,有人遇到,但是没有可以解决我这个问题的方法, 浪费了很 ...

  3. fluent将出口温度赋值给入口

    Fluent版本:Fluent18.2 首先我们启动Fluent 然后按照正常的流程进行模型缩放,材料的设置,边界条件的设置等等,然后初始化. 在完成了算例的初始化以后 (define (OutToI ...

  4. flask + Python3 实现的的API自动化测试平台---- IAPTest接口测试平台,更名:FXTest 接受定制开发(java版开发完毕)

    **背景: 1.平时测试接口,总是现写代码,对测试用例的管理,以及测试报告的管理持久化做的不够,              2.工作中移动端开发和后端开发总是不能并行进行,需要一个mock的依赖来让他 ...

  5. Ubuntu系统之Hadoop搭建

    作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3223 一.在Window中安装Oracle VM VirtualBox 二 ...

  6. 可伸缩性架构常用技术——之数据切分 Data Sharding/Partition

    1. 简介 本来想写一篇可伸缩性架构方面的文章,发现东西太多了,久久未能下笔,这里首先把大家最关注的数据切分(Partition/Sharding)方面的内容先写完,给大家参考. 我们知道,为了应对不 ...

  7. Goroutine调度器

    前言 并发(并行)一致都是编程语言的核心主题,不同于其他语言,例如C/C++语言用户序自行借助pthread创建线程,Golang天然就给出了并发解决方案:goroutine. Goroutine 写 ...

  8. Android相关属性的介绍:android:exported = true

    在Activity中该属性用来标示:当前Activity是否可以被另一个Application的组件启动:true允许被启动:false不允许被启动. android:exported 是Androi ...

  9. css3实现水平垂直居中------(特别注意,里边的固定还是不固定)

    a,----定位方式(父元素宽高固定,子元素宽高固定) <div class="Father"> <div class="children"& ...

  10. InvalidSelectorError: Compound class names not permitted报错处理

    InvalidSelectorError: Compound class names not permitted报错处理 环境:python3.6 + selenium 3.11 +  chromed ...