
树状数组/线段树
文章平均质量分 60
smmrSangria
这个作者很懒,什么都没留下…
展开
-
HDU_2838_Cow Sorting_树状数组
题目大意若干头牛,每头牛有一个权值,通过相邻交换将牛按权值升序排列,每次交换以两头牛的权值之和为代价,求最小代价。思路原排列确定后,每个数的与其之前的数形成的逆序对是固定的,(此类最小交换次数问题考虑逆序数)每次仅考虑一个数之前与其形成的逆序对避免重复计算,每次通过树状数组计算一次逆序对数(a)和次数前与其形成逆序的数之和(s),维护两个树状数组,没次代价为x * a + s#incl原创 2017-05-24 17:43:37 · 442 阅读 · 0 评论 -
HDU_3450_Counting Sequences_树状数组_离散化
题目大意给一串子序列(int)和一个数d,求完美子序列数(按原数列中顺序排列)。完美子序列:任意相邻两数之间的差不大于d。长度大于等于2。思路树状数组优化dp:dp[i] = sum(dp[j]), i - d dp[i]++; (dp中应包括自身长度为1的子序列,但不加到答案上)数列范围为整形(包括负),范围过大应用树状数组应该离散化。STL: unique(), l原创 2017-05-29 08:30:09 · 344 阅读 · 0 评论 -
HDU_6070_Dirt Ratio_二分_线段树优化
题目大意:给一串长度为n的整数数列(1 思路:在0~1内二分找最小值每次判断是否存在一个子串的值小于等于mid.X / Y X X X + mid * (l - 1) 从左到右枚举右界r,当枚举至当前的r时,线段树中的 0~r 区间内的保存l到当前r之间出现不同数字个数和mid * (l - 1)的和,用线段树维护区间最小值与 mid * r 比较.用pre[]原创 2017-08-08 14:41:14 · 427 阅读 · 0 评论 -
计蒜客_Lpl and Energy-saving Lamps_线段树
题目大意n个房间各有一些需要更换的台灯。每个月买m盏,包括上月累积,从左到右对各房间换灯泡,如果房间里需要更换的数量大于手中的灯泡数则跳过。询问某月累计对多少房间更换灯泡,以及剩下的灯泡数。思路线段树维护区间最小值,每次查询左边第一个小于手中灯泡数的房间。#include <iostream>#include <cstdio>#include <...原创 2018-09-24 16:08:40 · 366 阅读 · 0 评论