toj 4146 seq 难度系数(1-5):2
对于操作0:用add[v][x]表示对于i%b[v]=x的a[i]需要加上的add的累加和。
读取完所有操作后对于a[i], a[i]+=
∑add[v][i%b[v]]
对于操作1:我们知道 x*b[v] 到x*b[v]+b[b]-1的数字都要加上add,所以可以用一个数据结构维护对于一个区间的数字都加上一个数。
4147 strange network 难度系数(1-5):4
kd树+最小生成树
4148 number 0 难度系数(1-5):2
这一题方法挺多,
法1:用一个数组a[9]模拟加法
1到108
a[0]-a[9]表示一个数字的每一位,对于输入的询问从小到大排序,用一个数字记录1到当前数出现了几个0,模拟加法到i的时候,对于询问i给出答案。再做+1时,判断一下当前数字有几个0,用一个变量记录0的个数即可。
法2:对于n如果能算出与n位数一样且不超过n的数字中出现0的次数,那么把n分为
1−9,10−99....,10x−n
x是n的位数,分别进行计算就能得到0的个数了。
计算10^x-n中0的个数的方法,举例:n = 999
先计算990,991,..999中出现了几个0
然后90*,91*,92*…98*,*表示可以出现任意数字,那么可以把这些数拆分成3段
n1=9,k=0-8,x=*,x是0-9的任意组合,所以n1,k出现0的次数乘上x的组合数就是0出现的个数,再加上x中出现的0的个数即可,
4149 wordcount 难度系数(1-5):3
AC自动机,后缀数组
AC自动机1:忽略字母表的大小,用hash的方法找到一个节点u的第x个孩子,x就是第x个字母。自动机的建立是o(n)的,由于hash的设计会产生冲突,最终的复杂度为o(cn)
AC自动机2:字母表重新编码,增加一个字符表示字母结束标识对于如1111的字母,用1111*表示这个字母,那么自动机的字母表只需11个字符即可,重新编码以后相当于单词变成一个字符串形如:
x1∗x2∗.....xn∗
,就可以用模板做了。o(11n*logn)
后缀数组:也是增加一个结束标识 o(nlogn)
4150 wordrank 难度系数(1-5):1
字符串排序,可以把字符串映射到一个long long 的数字,然后排序,
也可以直接排序,但是排序的时候要避免字符数组的赋值操作,复杂度nlogn是可以过的
4151 eat 难度系数(1-5):4
树链剖分
4152 Tetris of llin 难度系数(1-5):3
dp或者分治 由于题太长,看的人不多,其实算中等题
4153 I like graph 难度系数(1-5):2
最长上升子序列,想得通就一下能做出来。
4154 TAC 难度系数(1-5):1
判断三角形是否在圆内,用每一个点判断是否在圆内即可