Processing math: 100%

06 2020 档案

摘要:跟上一题几乎是一模一样的套路。 离线+倍增预处理+开以深度为权值的线段树。 代码如下: #include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; int n,m,f[maxn][20]; int root[maxn],to 阅读全文
posted @ 2020-06-18 09:19 syzf2222 阅读(140) 评论(0) 推荐(0) 编辑
摘要:【问题描述】 小 Z 有一棵 n 个节点的树,以 1 号节点为根,每条边有对应的权值,小 Z 经过时会收到对应权值的保护费。 现在有 q 个询问,每次询问如下: 若小 z 站在 x 号节点上,他需要凑齐至少 k 的路费才能回家,但小 z 每 次只能往下走 (也就是只能往子树方向走),小 z 想知道凑 阅读全文
posted @ 2020-06-17 23:03 syzf2222 阅读(344) 评论(0) 推荐(1) 编辑
摘要:如果不算数组开小和没开longlong的话,我又是一遍过的。 思路很简单,考虑在线段树合并的时候,计算逆序对的贡献。 假设合并线段树ab,则在区间[l,r]的时候, a在前所产生的逆序对个数为a的右子树的大小乘以b的左子树的大小。 b在前所产 阅读全文
posted @ 2020-06-17 12:09 syzf2222 阅读(191) 评论(0) 推荐(0) 编辑
摘要:线段树合并,手打一遍过。 非常嗨皮,记录一下。 使用并查集,合并+查询。 代码如下: #include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; int n,m,q,a[maxn],rev[maxn],f[maxn]; in 阅读全文
posted @ 2020-06-16 21:58 syzf2222 阅读(139) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示