数据结构
文章平均质量分 79
Phoenix_Wright
剥水果型ACM选手
展开
-
HDU-5775
题意:给出一个数列,数字不会互相重复,求每个数字在冒泡排序时所到达的最右点到最左点的距离。 思路:思考一下会现其实这题就是在问你每个数字的右边有多少个比它小的数字。可以用线段树或者树状数组来解决,遍历一遍数列,每个数字都进行一次插入和查询操作。以线段树为例: 插入:将num[i]+1~n这个区间插入到线段树中,使这个区间中的节点的值加一。 查询:对于num[i]来说,num[i]~n原创 2016-08-02 21:11:47 · 376 阅读 · 0 评论 -
HDU-4288
题意: 一开始有一个空的数列,下标从1开始,然后给定三种操作: 1、向数列里添加一个数字。 2、删除数列中的一个数字。 3、查询由小到大排序后的数列中所有下标值对5取模为3的数之和。 解法: 我们可以用线段树来解决这个问题,首先将所有的操作保存下来,再将操作中所有出现的数字排序然后去重,离散化后建树即可。(也就是离线操作) 线段树中每个节点保存当前区间内有多少数字,以及下标值原创 2016-10-20 17:18:05 · 357 阅读 · 0 评论