树状数组
CaprYang
这个作者很懒,什么都没留下…
展开
-
区间交 HDU - 5700 权值线段树 | 树状数组 二分
题解将区间按照左端点排序 最开始将前k-1个区间的右端点加入权值线段数遍历剩下的区间每次把当前区间右端点加入权值线段数并查询倒数第k大的右端点每次遍历的左端点 到 倒数第k大的右端点的区间则为当前最大区间 使用前缀和求区间和AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;ty...原创 2018-10-18 16:07:56 · 445 阅读 · 0 评论 -
程序员的背包 ZZULIOJ - 2485 离散化 dp lis | 树状数组
题解经典的最长上升子序列问题 因为数值过大使用二分进行优化AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const int MAXN = 5e4 + 10;int a[MAX...原创 2018-12-23 18:09:02 · 456 阅读 · 0 评论 -
“卓见杯”第五届CCPC中国大学生程序设计竞赛河南省赛 题解
题解使用树状数组查询某个范围内的数值的数量,因为数值比较大需要先进行离散化处理。使用DFS遍历整棵树,当到达某个节点时首先查询区间[a[i]-m, a[i]+m]范围内的数字数量记为last,表示还没到当前子树时已有的数量。将当前节点值加进梳妆数组,因为自身到自身也算。进行递归,回溯后再次查询区间[a[i]-m, a[i]+m]记为now,表示增加了自身子树之后的数量。最后每个点的答案f[...原创 2019-04-13 18:41:12 · 869 阅读 · 2 评论