暑假集训日记--8.16--练习赛题+树状数组
2017-08-16 22:28
211 查看
今天上午又做了一遍昨天练习赛的A题,一道搜索题,但还是用了不少时间去调试代码。所以别的题也只是看了看。有一道是以前做过的题。感觉改题真的太浪费时间了。。所以要及时做好总结,写代码的时候争取认真注意细节。
下午又开始学新的东西了。上一周学的优先队列,做的几个题感觉都差不多。上一个专题也差一个题AK。看了看题。。感觉太麻烦了。。于是开始看树状数组。
对于树状数组,先是看了看算法竞赛的书上的内容,了解了树状数组的结构以及运用过程。树状数组可以高效的解决一些问题。例如区间的信息的查询等。而其比较主要的两个操作就是Add和Sum操作。
而对于树状数组,也要注意其下标的问题。树状数组用的比较多的还是求某一区间的和。
下面是比较常用的两个Add和Sum的实现方式。
先写一个计算二进制最右边1的代码:
int lowbit(int i)
{
return i&(-i);
}
然后Add操作:即令A[i] += v
void add(int i,int v)
{
while(i<=n)
{
c[i] += v;
i += lowbit(i);
}
} 然后是Sum操作:即求得A[1] + ... + A[i]的和
int Sum(int i)
{
int sum=0;
while(i>0)
{
sum += c[i];
i -= lowbit(i);
}
return sum;
} 要注意的问题是刚开始的数组要全部置为0,然后输入A[i]的过程中对C数组进行初始化。
明天还要继续看树状数组的相关内容,然后及时总结树状数组的练习题。用例题来加深对于树状数组的理解。
明天还要继续努力。
下午又开始学新的东西了。上一周学的优先队列,做的几个题感觉都差不多。上一个专题也差一个题AK。看了看题。。感觉太麻烦了。。于是开始看树状数组。
对于树状数组,先是看了看算法竞赛的书上的内容,了解了树状数组的结构以及运用过程。树状数组可以高效的解决一些问题。例如区间的信息的查询等。而其比较主要的两个操作就是Add和Sum操作。
而对于树状数组,也要注意其下标的问题。树状数组用的比较多的还是求某一区间的和。
下面是比较常用的两个Add和Sum的实现方式。
先写一个计算二进制最右边1的代码:
int lowbit(int i)
{
return i&(-i);
}
然后Add操作:即令A[i] += v
void add(int i,int v)
{
while(i<=n)
{
c[i] += v;
i += lowbit(i);
}
} 然后是Sum操作:即求得A[1] + ... + A[i]的和
int Sum(int i)
{
int sum=0;
while(i>0)
{
sum += c[i];
i -= lowbit(i);
}
return sum;
} 要注意的问题是刚开始的数组要全部置为0,然后输入A[i]的过程中对C数组进行初始化。
明天还要继续看树状数组的相关内容,然后及时总结树状数组的练习题。用例题来加深对于树状数组的理解。
明天还要继续努力。
相关文章推荐
- 暑假集训日记--8.19--树状数组
- 线段树与树状数组模版及专题练习
- 暑假-树状数组-F - Brainman
- [树状数组]code[vs] 1082——线段树练习 3
- 暑假集训日记--8.2--搜索
- ACM暑假集训日记 17.8.5
- 2017 暑假艾教集训 day10 AC自动机+马拉车+后缀数组 +kmp
- 寒假集训之树状数组
- BSG白山极客挑战赛题解 E 【二分+树状数组】
- 暑假集训 8.16 数据结构实验之排序三:bucket sort (简单的桶排序)
- 暑假集训日记--8.22--树状数组+练习赛
- 暑假集训日记--8.24--树状数组+练习赛
- 暑假集训日记--8.3--搜索
- ACM暑假集训日记 17.8.18 树状数组
- 暑假集训 8.11 树结构练习——排序二叉树的中序遍历 sdutoj2128
- 2017暑假训练之树状数组
- 暑假集训日记--8.23--树状数组
- ACM暑假训练 问题 G: Balanced Photo (树状数组优化)
- ACM暑假集训日记 17.8.1
- ACM暑假集训日记 17.8.2