摘要:
题意 给定数组$a(\left| a \right|\leq 10^5)$和整数$k(2\leq k \leq 100)$,问满足一下条件的二元组$$的数目: $1 \leq i using namespace std; typedef long long ll; const int maxn=1e 阅读全文
摘要:
题意 给定整数c和数组a,b,$a_i$表示通过爬楼梯的方法从第$i$层到$i+1$层需要的时间,$b_i$表示通过坐电梯的方法从第$i$层到$i+1$层需要的时间,坐电梯前需要等c单位时间。即对于$i using namespace std; typedef long long ll; const 阅读全文
摘要:
Google Kick Start Round G 2019 Book Reading 暴力,没啥好说的 cpp include using namespace std; typedef long long ll; const int maxn=1e5+5; int n,m,q,p[maxn],r[ 阅读全文
摘要:
解题思路: fail树上用权值线段树合并求right/endpos集合,再用倍增找到待查询串对应节点,然后权值线段树求第k大。 cpp include using namespace std; typedef long long ll; const int maxn=1e5+5; int n,q; 阅读全文
摘要:
题意 给定长度n和m个限制(l,r),每一个限制的意义是$a_l \times a_{l+1} \times ... a_r = 0 \quad mod\ 9$。 问有多少个满足所有条件且长度为n的10进制数(可以包含前导0) 解题思路 看到可以包含前导零的时候就想到了数位DP,但是比赛的时候没想出 阅读全文
摘要:
题意 给定一个长度为n字符串,字符集大小为m(1 using namespace std; typedef long long ll; const int maxn=1e6+5; const int mod=1e9+7; struct Suffix_Automaton{ struct state{ 阅读全文
摘要:
题意 树链上带修改第K大 思路 树链剖分+线段树套平衡树+二分 具体就是先树剖把树映射到区间,然后对区间建线段树,线段树的每一个节点是一颗权值平衡树,修改就是在线段树上跑一遍,对于经过的线段树节点,其实就是平衡树,做一次删除和一次添加。查询就是二分最终的答案ans,然后计算链上大于ans的节点有多少 阅读全文
摘要:
题意 强制在线的树链上第K小 解题思路 树链上第k大问题很容易能想到树链剖分和主席树。如果我们对树深度优先遍历一遍,每遍历到一个结点u就在它父亲结点的基础上更新,那么T[u]这一棵树就维护了从u到根节点这一条链上的信息,再结合树的性质,从u到v这一条链上的信息就可以由u,v,lca(u,v),fa[ 阅读全文
摘要:
题意 给定n个模式串,有m个询问,每次询问第X个模式串在第Y个模中出现了多少次 解题思路 以fail树相反的方向建一棵树T,问题转化为X的子树中有多少个y的终止节点。跑出T的dfs序,X的子树就可以表示为一段区间,然后对trie跑一遍dfs,每进入一个点就把dfs序列上对应的位置+1,离开一个点就把 阅读全文
摘要:
题意 给定一个正整数N和n个模式串,问不大于N的数字中有多少个不包含任意模式串,输出对$1e^9+7$取模后的答案。 解题思路 把所有模式串都加入AC自动机,然后跑数位DP就好了。需要注意的是,这题需要考虑前导0的影响。举个栗子,对于N=2333,在处理数字233时其实处理的是"0233",这时如果 阅读全文