随笔分类 - 树状数组
摘要:
T1——Red and Green Apples Solution Code #include <cstdio> #include <algorithm> #define int long long using namespace std; const int MAXN = 1e5 + 5; int
阅读全文
T1——Red and Green Apples Solution Code #include <cstdio> #include <algorithm> #define int long long using namespace std; const int MAXN = 1e5 + 5; int
阅读全文
摘要:
Description Solution 我们不难发现最终得到的是一个单峰序列,所以中间那个草一定放最高的,然后往两边依次放叫矮的。 由于每一次操作会增加一组逆序对,所以只需要思考如何让最终序列的逆序对数最少。 我们可以正反跑两次,放那边的逆序对最少,就是每一个草的贡献,就去那边,最后求和即可。 C
阅读全文
Description Solution 我们不难发现最终得到的是一个单峰序列,所以中间那个草一定放最高的,然后往两边依次放叫矮的。 由于每一次操作会增加一组逆序对,所以只需要思考如何让最终序列的逆序对数最少。 我们可以正反跑两次,放那边的逆序对最少,就是每一个草的贡献,就去那边,最后求和即可。 C
阅读全文
摘要:树状数组的概念 树状数组(Binary Indexed Tree(B.I.T))是一个区间查询和单点修改复杂度都为 $\log n$ 的数据结构。主要用于查询任意两点之间的所有元素之和。 引入 问题的提出 有一个一维数组,长度为 $n$。 对这个数组做两种操作: 修改,对第 $i \to j$ 之间
阅读全文
摘要:题目大意 第一行输入 $n$ 代表有 $n$ 个同学,$m$ 代表卡车最多运的物品重量。 第二行输入 $n$ 个数字 $a_i$ 表示第 $i$ 个同学的行李总量。 每组数据为 $n$ 个子问题:一定将第 $i$ 个同学的行李放进卡车,而卡车还会有剩余空间,放上第 $1$ 到 $i - 1$ 同学的
阅读全文

浙公网安备 33010602011771号