随笔分类 - 树状数组
摘要:分析 按照被穿过多少次整体二分即可 代码
阅读全文
摘要:分析 对于第一问我们直接从上到下枚举所有横边 每一次交换两边的列标号即可 对于第二问我们发现答案就是最终序列的逆序对数量 代码
阅读全文
摘要:分析 就是分别维护l和r的个数 然后对于询问区间[L,R] 之后l树状数组中小于等于R的个数减掉r树状数组中小于L的即可 代码
阅读全文
摘要:题目大意 给你一个序列s 让你求一个1~n的序列 使得对于第i个位置它前面所有小于p[i]的数的和恰好为s[i] 分析 我们可以从后往前确定每一位 每次一二分找到恰好等于s[i]的数 但是我们发现这样会产生重复选一个点的情况 所以我们改为每次找第一个大于s[i]的点 这个点-1恰好为答案 代码
阅读全文
摘要:分析 对于每一个点只要维护它前面/后面的一小一大组合的数量 对于这个可以维护两个树状数组 然后从前往后/从后往前分别扫一遍相乘即可 代码
阅读全文
摘要:传送门 分析 我们发现对于没有发现的点相对位置不会发生改变 于是我们可以吧问题转化为求一个lis 于是我们字典序第k小的答案就是字典序第k大的lis 代码
阅读全文
摘要:传送门 分析 咕咕咕 坑点就是没有本质相同的字符串且x<=y 代码
阅读全文
摘要:传送门 分析 我们发现两个栈可以看作一个数组,而栈顶则是将这个数组拆成两个栈的分割点。 于是每次移动就变成了分割点的移动,每次移动时都统计下目的分割点和当前分割点之间的物品数目即可。 代码
阅读全文
摘要:传送门 分析 我们考虑把每个A[i]考虑为山峰的高度,每次的B考虑为海平面 于是我们知道对于A[i]和A[i-1],如果A[i-1]<A[i]则在A[i-1]<B<=A[i]时会使陆地总数加一 于是树状数组维护即可 代码
阅读全文
摘要:传送门 分析 将询问离线,枚举右端点。新加入一个右端点i时,假设离i第t近的同色位置为p,t+1近的是q,则当i是右端点时,(q,p]的点可以作为左端点。 注意对于一个点离它第t近的同色点可以用队列维护求得 之后用树状数组差分一下就可以了 代码
阅读全文
摘要:传送门 题目 约翰的N 头奶牛每年都会参加“哞哞大会”。哞哞大会是奶牛界的盛事。集会上的活动很 多,比如堆干草,跨栅栏,摸牛仔的屁股等等。它们参加活动时会聚在一起,第i 头奶牛的坐标为Xi,没有两头奶牛的坐标是相同的。奶牛们的叫声很大,第i 头和第j 头奶牛交流,会发出max{Vi; Vj}×|Xi
阅读全文
摘要:传送门 题目 输入格式: 第一行,一个数n,表示序列中有n个数。 第二行n个数,表示给定的序列。 输出格式: 给定序列中逆序对的数目。 数据范围: 对于50%的数据,n≤2500 对于100%的数据,n≤40000。 分析 使用分治的思想将序列不断分为两段,然后将这两段进行归并排序,因为每段已经排好
阅读全文

浙公网安备 33010602011771号