8.23

本文深入解析树状数组的应用场景,重点介绍了如何利用树状数组解决逆序数相关问题,涵盖多种典型算法竞赛题目,如Ultra-QuickSort、Stars等,通过实例演示树状数组在求解逆序数、区间查询等方面的优势。

POJ 2299 Ultra-QuickSort(树状数组+离散化 归并排序求逆序)

这也是一个结论题。每次只能交换相邻的元素,从而使整个序列上升有序,问最少需要交换几次,就是求逆序数。从前往后求逆序数,就相当于从后往前看比当前加入的数小的个数呗。

离散化就是数太大了,相应到都减小,但保持原有的大小关系。怎么操作呢?

设一个结构体,有两个变量,一个变量保存数的值,另一个变量保存此数的位置,然后输入结构体,按数的大小,由小到大排序,然后又由这个数的位置代替这个数,如果这个数在前面出现过,就是他出现过的位置。

POJ 2352 Stars(树状数组) 

题意:给出n个星星的点的坐标,每个坐标都不相同,坐标按y递增给出,y相同时,按x坐标递增给出,每个星星都有等级,等级是这个星星左下方的星星的个数,不包括它自己,输出每个等级星星的数量。

分析:由于y递增给出,求第i个星星的等级,就是看比i的x坐标小的有几个星星,就是第i个星星的等级。裸题了。注意x可能有0,所以x++!!!!,因为树状数组必须从1开始!!!!

POJ 2481 Cows(树状数组)

这个也需注意,区间左端点可能有0。怎么做?涉及到区间一般都会拍拍序,对于任意两头牛i和j,只有当Si <= Sjand Ej <= Ei and Ei - Si > Ej – Sj时,i才比j强壮,即:如果将所有牛的E区间按从大到小排序(如果E相同,则S小的排在前面)的话,那当前读取到第i个牛的Si和Ei,那么之前(假设任意牛的区间不会完全相同)的牛的Sj(j<=i-1)<=Si的这些牛就都比i号牛强壮了。所以我们首先对读取到的区间排序,然后可以用树状数组利用牛的S坐标来算出结果。需要注意的是如果两个区间完全一样,那么这两头牛不能互为强壮。怎么操作呢?就让它和前面和它一样的牛一样呗。

HDU 1394 Minimum Inversion Number(树状数组)

先求出一开始的逆序数,后就讨论不同序列的情况,当某一时刻首位a[i]被移动到最后一位,那么原序列由a[i]组成的倒置数有a[i]-1个(此时a[i]加过1),也就是后面比他小的个数(因为是首位,前面不需要考虑)。同理,加到最后一个后,他前面有n-a[i]个数可以和a[i]形成倒置数。即n - a[i] - (a[i] - 1)

HDU 3743 Frosh Week(树状数组或归并排序求逆序)

这个和poj2299一样的,就是求逆序数。

HDU 2838 Cow Sorting(树状数组)

也是逆序数。题意:和以前求逆序数的题意一样,不过这不是求总共多少个逆序数,而是求如a[i-1]>a[i]花费就是a[i-1]+a[i],问使整个序列上升有序最小的花费。以前是求得使整个序列上升有序最小的交换次数。这个也一样。随便搞一搞就过了。之一longlong

POJ 2182 Lost Cows

这个题目,思维题,暴力即可,就是求每个数知道前面有几个数比他小,让你输出它的编号。

 

 

 

 

 

一个非常著名的优秀屏幕、文本和视频捕获、编辑与转换软件。可以捕获Windows屏幕、DOS屏幕;RM电影、游戏画面;菜单、窗口、客户区窗口、最后一个激活的窗口或用鼠标定义的区域。图象可保存为BMP、PCX、TIF、GIF、PNG或JPEG格式,也可以存为视频动画。使用JPEG可以指定所需的压缩级(从1%到99%)。可以选择是否包括光标,添加水印。另外还具有自动缩放,颜色减少,单色转换,抖动,以及转换为灰度级。 可以捕获Windows屏幕、DOS屏幕;RM电影、游戏画面;菜单、窗口、客户区窗口、最后一个激活的窗口或用鼠标定义的区域。图象可被存为BMP、PCX、TIF、GIF或JPEG格式,也可以存为系列动画。 使用JPEG可以指定所需的压缩级(从1%到99%)。可以选择是否包括光标,添加水印。 另外还具有自动缩放,颜色减少,单色转换,抖动,以及转换为灰度级。 此外,保存屏幕捕获的图象前,可以用其自带的编辑器编辑;也可以选择自动将其送至SnagIt打印机或Windows剪贴板中,也可以直接用E-mail发送。 SnagIt具有将显示在Windows桌面上的文本块转换为机器可读文本的独特能力,这里甚至无需CUT和PASTE。 程序支持DDE,所以其他程序可以控制和自动捕获屏幕。 新版还能嵌入Word、powerpoint和ie浏览器中。 利用SnagIt的捕捉界面,能够捕捉您Windows PC上的图片、文本和打印输出,然后通过内嵌编辑器,可以对捕捉结果进行改进,SnagIt Screen Capture增强了您PrintScreen键的功能。 Snagit是一个极其优秀的捕捉图形的软件,和其他捕捉屏幕软件相比 它有以下几个特点: 1、捕捉的种类多:不仅可以捕捉静止的图像,而且可以获得动态的图像和声音,另外还可以在选中的范围内只获取文本。 2、捕捉范围极其灵活:可以选择整个屏幕,某个静止或活动窗口,也可以自己随意选择捕捉内容。 3、输出的类型多:可以以文件的形式输出,也可以把捕捉的内容直接发e-mail给朋友,另外可以编辑成册。 4、具备简单的图形处理功能:利用它的过滤功能可以将图形的颜色进行简单处理,也可对图形进行放大或缩小。 目前SnagIt最新版本为SnagIt 11。 更新日志: Snagit截图工具v11.3.0.107 : *新增分享到Google Drive,并从Google Drive导入。 *新增TechSmith Fuse集成,从您的移动设备的SnagIt。 *增加了自动更新SnagIt的能力。 *Windows 8.1支持 *新增能力旋转stamps。 *增加了文字填充为标注。 *增加了尾巴锁的标注。 *增加了改进捕捉十字星。 *修复了各种错误。 v11.2.0 ( 2013年3月19日) : *重新设计的一键式。 *重新设计了SnagIt的消息中心。 *增加了在YouTube的输出进行双因素身份验证的支持。 *增加了额外的日语文件名组件自动文件命名。 *重新添加,通过批量转换缩放多个图像的支持。 *改进的滚动在Microsoft outlook中的电子邮件捕获的性能。 *修正了SnagIt的编辑器会上传视频到YouTube之后崩溃。 *修正了SnagIt的无法备份和恢复库大于4 GB 。 *修正引起的分组,并在画布上几个解组矢量对象崩溃的bug 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值