集训第二十二天(2017/8/21):树状数组刷题
来源:互联网 发布:deb ubuntu 安装 编辑:程序博客网 时间:2024/06/14 19:49
今天树状数组的题目开始了,因为前三天老师一直让看树状数组的例题,感觉今天做题比以往顺畅,今天AC了五道题,这五道题跟前面看的例题都或多或少有相似和相同的地方,所以今天做的很爽~~~
今天还有意外收获,有一道题用到了归并排序求逆序数,网上有大神把归并排序的模板写出来了,我再打一遍:
int merge_sort(int *a,int *b,int i,int j)//归并排序并返回逆序值,a为待排序数组,b为辅助数组
{
if(i==j) return 0;
int ans=0;//存储逆序值
int mid=(i+j)/2;
ans+=merge_sort(a,b,i,mid);//获取左边的逆序值
ans+=merge_sort(a,b,mid+1,j);//获取右边的逆序值
int p=i,q=mid+1,k=i;
while(p<=mid||q<=j)//获取左边与右边关联的逆序值
{
if(p>mid||q<=j&&a[p]>a[q]);//从左半数组复制到临时空间
{
b[k++]=a[q++];
ans+=mid-p+1;
}
else b[k++]=a[p++];//从右半数组复制到临时空间
}
for(int k=i;k<=j;k++) a[k]=b[k];//从辅助空间复制回a数组
return ans;
}
以上为归并排序模板。
通过这几天看树状数组的例题,离散化处理和归并排序求逆序用得比较多。
树状数组处理某些问题真的很巧妙,但也真的很难联想到用树状数组,多做题应该会好一些吧...
明天又有一场团队赛,希望明天对我好一点~~~
- 集训第二十二天(2017/8/21):树状数组刷题
- 集训第十六天(2017/8/15):树状数组
- 集训第二十四天(2017/8/23):二维树状数组&三维树状数组
- 2017.8.21暑假集训第二十二天
- 集训第十七天(2017/8/16):继续研究树状数组
- 集训第十八天(2017/8/17)看树状数组+第一次组队打比赛
- 集训第十九天(2017/8/18):依然是树状数组
- 集训第二十三天(2017/8/22):树状数组和团队练习赛
- 集训第二十五天(2017/8/24):树状数组&团队赛
- 2017暑期集训Day 25 树状数组
- 陕西省集训之树状数组
- 集训8.21树状数组讲解
- 暑假集训日记--8.16--练习赛题+树状数组
- 暑假集训日记--8.19--树状数组
- 暑假集训日记--8.21--树状数组
- 暑假集训日记--8.23--树状数组
- ACM暑假训练第3场中石油集训题(记忆化搜索,dp,树状数组)
- 集训第二十六天(2017/8/25):集训总结
- Linux内核|实验四 观察 Linux 行为
- Test
- 【快速幂】【模板】
- Android 7.0 Launcher3的启动和加载流程分析
- 【转】python日期时间函数
- 集训第二十二天(2017/8/21):树状数组刷题
- 扩增子统计绘图2散点图:Beta多样性
- 行内元素的垂直居中方法
- 【JAVA并发学习二】Java内存模型
- oracle 数据库
- SDUTOJ-3363 数据结构实验之图论七:驴友计划(Floyd)
- 树莓派DHT22传感器设置
- DB2 插入数据并返回自增长主键
- springboot使用自定义配置文件