{POJ}{树状数组}
总结一下树状数组的题目:
{POJ}{3928}{Ping Pong}
非常好的题目,要求寻找一个数组中满足A[i]<A[k]<A[j]的个数,其中i<k<j(或者相反)。很巧妙的将题目转化为树状数组的思想,从A[k]考虑,则只需要寻找左边比自己小和右边比自己大的可能性(或者相反),这样就可以用树状数组来维护。思想的转变很重要。
{POJ}{1990}{MooFest}
n头牛,不同的听力值v,当i,j想要通话时,需要max(v(i),v(j))*(dist[i]-dist[j])的volume,问这n*(n-1)/2对牛总共的volume时多少。非常好的一道树状数组, 自己想了很长时间没想起来,最后看了结题报告才恍然大悟,对n头牛按v进行排序,由小到大,tre_sumx[i.x]记录前i头牛于x的坐标的总 和,tre_cnt[i.x]记录前i头牛坐标低于x的牛的头数,total记录前i头牛的总x和,那么对于每个牛,依靠这三个量就可以计算出i牛和之前 的所有牛的volume和。
{POJ}{1195}{Mobile phones}
给定n*n矩阵,和几种在线操作,包括对某一点(x,y)值修改,查询一个矩形(x1,y1,x2,y2)的元素和。
典型的在线查询,可用树状数组实现,查询矩形和时,稍微注意以下就可以了
sum(x2,y2)+sum(x1-1,y1-1)-sum(x1-1,y2)-sum(x2,y1-1);
还要注意树状数组的修改操作modify(index,delta)中的index要>0。
{POJ}{3067}{Japan}
顺序给两组平行的点依次编号1~N和1~M,给定K个线段在两组点之间,求相交(cross)的线段对有多少个,同一个起点或终点不算相交。
由于题目涉及到统计和的问题,自然可以交给树状数组来做,方法和Cows差不多现对线段进行排序,按w由大到小,如果w相等,按e从大到小(必要),最后遍历,修改查询就可以了。
{POJ}{2155}{Matrix}
给定一个0-1矩阵,在线对(x1,y1),(x2,y2)之间的元素置反,在线对特定矩阵求和。
一道二维树状数组,思路还是挺清晰的,由于是0-1矩阵,只需用tre[][]记录一个元素被置反的次数即可,当对 (x1,y1),(x2,y2)区间置反时,需要改动四个地方就是4个角就可以了。为什么呢?如下图,假设A区未需要置反的区域,因为改动A区的左上角 时,由树状数组的性质知:A,B,C,D4个区域都是要被置反的,所以在依次置反BD,CD,D,这样,置反的总过程为ABCD,BD,CD,D,这样我 们就会发现结果对2取模时,只有A区被置反,B,C,D三个区都没有变化。明白原理之后就好做了。
{POJ}{2481}{Cows}
给定n个区间,问每个区间所覆盖的区间的个数。
第三道树状数组,终于有感觉了,要不就傻X了,对区间排序,然后树状数组查询,思路和Stars那道差不多,不过还要处理重合区间的情况,只需排序后O(N)扫描一遍就好了。
{POJ}{3321}{Apple Tree}
有n个苹果被树枝连接,这是一棵树!有两种操作C ind 和 Q ind,前者是摘下ind苹果,如果没有,哪么会长出新的一个,后者是查询ind有几个子苹果。
第二道树状数组,自己想了很久不知道怎么转化,原来是利用树的性质,dfs一遍,记录每个节点的low和high值,那么他的 子结点的low值和high值肯定在[low,high]之间,然后就可以通过tre[high[i]]-tre[low[i]-1]来查询当前节点的子 结点个数了
{POJ}{2352}{Stars}
给定一组点,问二维空间中各个点的等级是多少,点的等级定义如下:其左下方点的个数。
{POJ}{树状数组}的更多相关文章
- POJ 2352 Stars(树状数组)
Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 30496 Accepted: 13316 Descripti ...
- poj 1195:Mobile phones(二维树状数组,矩阵求和)
Mobile phones Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 14489 Accepted: 6735 De ...
- poj 3321:Apple Tree(树状数组,提高题)
Apple Tree Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 18623 Accepted: 5629 Descr ...
- POJ 2299 Ultra-QuickSort 逆序数 树状数组 归并排序 线段树
题目链接:http://poj.org/problem?id=2299 求逆序数的经典题,求逆序数可用树状数组,归并排序,线段树求解,本文给出树状数组,归并排序,线段树的解法. 归并排序: #incl ...
- POJ 3321 树状数组(+dfs+重新建树)
Apple Tree Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 27092 Accepted: 8033 Descr ...
- POJ 2352Stars 树状数组
Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 42898 Accepted: 18664 Descripti ...
- poj 2155 Matrix---树状数组套树状数组
二维树状数组模版,唯一困难,看题!!(其实是我英语渣) Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 22098 ...
- 树状数组求逆序对:POJ 2299、3067
前几天开始看树状数组了,然后开始找题来刷. 首先是 POJ 2299 Ultra-QuickSort: http://poj.org/problem?id=2299 这题是指给你一个无序序列,只能交换 ...
- POJ 2464 Brownie Points II (树状数组,难题)
题意:在平面直角坐标系中给你N个点,stan和ollie玩一个游戏,首先stan在竖直方向上画一条直线,该直线必须要过其中的某个点,然后ollie在水平方向上画一条直线,该直线的要求是要经过一个sta ...
随机推荐
- Java开发环境的配置
为了能够在计算机上开发Java程序和运行Java程序,就需要在Windows操作系统上配置Java开发环境. 首先,安装JDK: 1.在Oracle官网上下载JavaSE: 2.在Download下载 ...
- C++学习笔记21:文件系统
文件系统 实际文件系统 ext, ext2, ext3, ext4 虚拟文件系统 VFS 特殊文件系统/proc:从proc文件系统中抽取信息 实际文件系统:组成与功能描述 引导块,超级块,索引结点区 ...
- Sed是个好东西
今天遇到的源码使用了变态的宏,直接对参数进行宏处理,使得我的vim插件几乎全废,只能想办法将宏给替换进去. #!/bin/bash find . -type f -name '*.c' | xargs ...
- Sublime Text 3开启自动换行
在Submine Text 3中要开启自动换行功能只需要两个步骤: 1.找到查看(View) 2.点击弹出菜单中的自动换行即可 但是如果是在2中的话就相对麻烦少少,现在也说下其开启自动换行功能的步骤: ...
- App_Offline.htm 功能
在ASP.NET 2.0 站点根目录下,只要存在 App_Offline.htm 文件,那么所有对.aspx的请求都将转向App_Offline.htm .而且浏览器的地址栏显示的是所请求的.aspx ...
- JavaScript 中的window.event代表的是事件的状态,jquery事件对象属性,jquery中如何使用event.target
http://wenda.haosou.com/q/1373868839069215 http://kylines.iteye.com/blog/1660236 http://www.cnblogs. ...
- Windows 7上打开IE浏览器报错:无法启动此程序,因为计算机中丢失api-ms-win-core-path-|1-1-0.dll。尝试重新安装该程序以解决此问题。
Windows 7上打开IE浏览器报错: 1. 重新安装IE11也没有解决该问题 2. 在其他Win7电脑也搜索不到该文件,但是能使用IE浏览器. 3. 从网上找了一个dll文件,注册时提示如下图
- Func<T>与Action<T>委托泛型介绍
.Net 3.5之后,微软推出了Func<T>与Action<T>泛型委托.进一步简化了委托的定义. Action<T>委托主要的表现形式如下: public de ...
- Fatal error: Call to undefined function imagettftext()解决办法
Fatal error: Call to undefined function imagettftext()解决办法 我的问题是php编译安装时指定了gd的目录,其实不用指定.就可以了 博客分类: ...
- 关于初次使用Verilog HDL语言需要懂的基本语法
关于初次使用Verilog HDL语言需要懂的基本语法 1.常量 数字表达式全面的描述方式为:<位宽><进制><数字> 8’b10101100,表示位宽为8的二进制 ...