首页 > TAG信息列表 > TJOI2019
P5341 [TJOI2019]甲苯先生和大中锋的字符串
题目背景 TJOI2019 D2T2 源文件名:substring.* 时间限制: 1s 内存限制: 128M 题目描述 大中锋有一个长度为 nn 的字符串,他只知道其中的一个子串是祖上传下来的宝藏的密码。但是由于字符串很长,大中锋很难将这些子串一一尝试。 这天大中锋找到甲苯先生算命,但是甲苯先生说:“天机P5337 [TJOI2019]甲苯先生的字符串
显而易见有一个记录末尾字母的 \(O\left(n\right)\) 递推。 显而易见可以用矩阵快速幂优化,不妨用一个 \(1\times 26\) 的矩阵维护当前 DP 值,初始化为: \[\begin{bmatrix}1&1&1\cdots 1&1&1\end{bmatrix} \]构造一个 \(26\times 26\) 的转移矩阵,如果 \(i\) 不能转移到 \(j\) 那么 \(题解 P5339 【[TJOI2019]唱、跳、rap和篮球】
题目链接 Solution [TJOI2019]唱、跳、rap和篮球 题目大意:有 \(a\) 个人喜欢唱,\(b\) 个人喜欢跳,\(c\) 个人喜欢 rap,\(d\) 个人喜欢篮球。你要从中选出 \(n\) 个人组成一个排列,如果存在一个位置 \(i\),使得 \(i,i+1,i+2,i+3\) 位置的人依次喜欢唱、跳、rap、篮球,队伍就会不和谐。求P5338 [TJOI2019]甲苯先生的滚榜 FHQ_TREAP
题意: 戳这里 分析: 每个人按照 AC数目 为第一关键字降序,罚时 为第二关键字升序 的排序方式,动态修改,查询排名 这个修改和查询很平衡树,所以我们就上 \(fhq\) ,将值的大小当做键值,所以我们需要新建一个结构体,然后重载 \(<=\) 号,剩下操作和普通 \(fhq\) 一毛一样 代码: #include<bits/stdLG5337/BZOJ5508 「TJOI2019」甲苯先生的字符串 线性动态规划+矩阵加速
问题描述 LG5337 BZOJ5508 题解 设\(opt_{i,j}(i \in [1,n],j \in [1,26])\)代表区间\([1,i]\),结尾为\(j\)的写法。 设\(exist_{i,j}(i,j \in [1,26])\)代表\((i,j)\)能否前后相邻,如果为\(1\),则不能。 则有 \[opt_{i,j}=\sum_{k=1}^{26} opt_{i-1,k}(exist_{k,j}=0)\] 发现\(n \l[BZOJ5512][SAM]TJOI2019:甲苯先生和大中锋的字符串
BZOJ5512 放到SAM上统计right集合大小然后就完了 Code: #include<bits/stdc++.h> using namespace std; inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=-f;ch=getchar();} while(isdigit(ch)) {res=(res<<1)+(res<&【LOJ】#3109. 「TJOI2019」甲苯先生的线段树
LOJ#3109. 「TJOI2019」甲苯先生的线段树 发现如果枚举路径两边的长度的话,如果根节点的值是\(x\),左边走了\(l\),右边走了\(r\) 肯定答案会是\((2^{l + 1} + 2^{r + 1} - 3)x + t\),可以发现\(t < (2^{l + 1} + 2^{r + 1} - 3)\),于是考虑计算对于\(t\),左边走了\(l\),右边走了深度\(r\)[TJOI2019]唱、跳、rap和篮球
[TJOI2019]唱、跳、rap和篮球 律师函警告 考虑容斥,减去至少一个cxk的 枚举有i个cxk,方案数:C(n-3*i,i)因为不相交,所以直接扣掉剩下3个,选择第一个开始的位置,一一对应 剩下的?随便,统计多了? 二项式反演! 需要计算:(a-i,b-i,c-i,d-i,n-4*i) 表示用a-i,b-i,c-i,d-i,填n-4*i的队列的不同方案数luogu P5342 [TJOI2019]甲苯先生的线段树
传送门 你个好好的省选怎么可以出CF原题啊,你们这个题害人不浅啊,这样子出题像极了cxk,说到cxk,我又想起了他是NBA形象大使,跟我是西游文化大使一样一样的,今年下半年... 别说了,jinsaisannian 因为线段树树高是\(logn\)层的,所以第一问可以直接暴力做,后面记这个权值为\(n\).第luogu P5341 [TJOI2019]甲苯先生和大中锋的字符串
传送门 考虑子串以及出现个数,可以发现SAM可以快速知道每种子串的出现次数,即所在状态的\(endpos\)集合大小,然后一个状态对应的子串长度是一段连续区间,所以可以对每个状态差分一下,就能统计答案了 #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #luogu P5339 [TJOI2019]唱、跳、rap和篮球
传送门 你写题像CXK 因为要求没有那样的一堆人在闻鸡起舞,所以可以考虑容斥,枚举一定有\(i\)堆人在闻鸡起舞,然后其他位置随便放,容斥系数为\((-1)^i\).然后注意到因为一堆人一定是依次唱,跳,rap,篮球的,这些人出现的位置没有交,如果设\(f_i\)为随便放\(i\)人的方案,那么有\(i\)堆[TJOI2019] 甲苯先生的线段树
臭名昭著的巧合:CF750G 题意:在无限深度的一颗线段树中询问编号和为S的简单路径条数。 题解传送门 这道题相当于在原来基础上多了询问两点间简单路径的编号的的问题。 直觉告诉我们只需要求出两点在线段树上的lca,然后套用上个问题中所推得的式子即可。而线段树上两点的lca的二进制表[TJOI2019]甲苯先生的滚榜——非旋转treap
题目链接: [TJOI2019]甲苯先生的滚榜 要求维护一个二维权值的集合并支持单点修改,用平衡树维护即可。 因为$n\le 10^6$但$m\le 10^5$,所以最多只有$10^5$个人被操作。 记录每个人的二维权值,只维护被操作过的人权值的平衡树即可。 如果一开始将$10^6$个人都建出来会$TLE$。 #includ