
树状数组
Zookkk
这个作者很懒,什么都没留下…
展开
-
The Preliminary Contest for ICPC Asia Xuzhou 2019 I. query
题意:找[l,r]范围内大数是小数的倍数的数对数量 思路:首先预处理一下每个数的位置pos[a[i]=i,再从枚举a[i](0<i<=n)的倍数,a[i]*2,a[i]*3....a[i]*(n/a[i]),预处理每个位置左边对其有用的数的位置,再对询问进行离线处理,将r作为键值,放进vector数组里,然后我们实际上做了这么一个操作,处理每个位置的数对右边数的贡献,只不过我们这个右...原创 2019-10-18 22:39:09 · 175 阅读 · 0 评论 -
树状数组模板
int lowbit(int i) { return i & -i;//或者是return i-(i&(i-1));表示求数组下标二进制的非0最低位所表示的值 } void update(int i,int val)//单点更新 { while(i<=n){ C[i]+=val; i+=lowbit(i);//由叶子节点向上更...原创 2019-05-05 22:58:50 · 142 阅读 · 0 评论 -
Hdu 6230 树状数组+manacher
思路:满足题意必须找到一对i,j,符合下列条件 j>i j-i<=p[i] j-i<=p[j] p[i]为以第i个字符为中心的回文串半径,最后一个式子一移项得j-p[j]<=i,然后通过前两个式子可以确定j的范围在(i,i+p[i]]里,每次把符合条件的j放进去,然后每次查询(i,i+p[i]]区间和就行了。 代码: #include<bits/stdc...原创 2019-05-07 00:22:32 · 172 阅读 · 0 评论