shadandeajian的博客

长沙理工大学_CS专业_大二在校学生

POJ 3321 DFS序 + 树状数组 查询子树

题目:传送门 题意: 给一个树,查询结点下的子树的苹果总数,并且要求支持增减苹果 题解: 查询子树,我们首先想到的是DFS序,还要支持修改操作,我们可以用树状数组维护这个DFS序,因为还要查询,所以我在实际程序中使用了欧拉序。 AC代码: #include <iostream...

2018-10-10 17:51:34

阅读数 424

评论数 0

dsu on tree 启发式合并算法

翻译自:http://codeforces.com/blog/entry/44351 我们先引入这样一个问题: 有一棵树,树上有很多结点,每个结点有一个颜色c,我们现在想知道树上每个结点的子树**(subtree)**,有多少个结点出现颜色c。子树的定义:该结点和其所有的孩子构成的树。 如上图:...

2018-10-10 11:57:04

阅读数 474

评论数 1

Codeforces 600E dsu on tree 启发式合并

题目:传送门 题意: 给一颗树,计算所有结点的子树,颜色最多的结点的 颜色种类的sum和,子树的定义是当前结点和其所有的子节点。 题解: 我们可以想到一种暴力的解法,就是O(n)遍历所有的结点,然后dfs搜索它的所有子节点,查看颜色出现最多的结点,用一个ans数组维护答案,最后输出ans。显然,...

2018-10-09 21:44:51

阅读数 337

评论数 0

BZOJ 3211 线段树 区间更新 区间求和

传送门:题目 题意: 给一个序列,有两种操作: 给区间[l,r],区间的每个值都开根号 查询区间[l,r]的sum和 题解: 纯的线段树,区间更新,区间求和,套个模板就好。然后有个技巧,10910910^9开5次方就是1了,所以我们在建树的时候,发现值≤≤\leq1的时候,标记一下,...

2018-08-26 21:25:42

阅读数 108

评论数 0

POJ 2481 树状数组

传送门:题目 AC代码: #include <iostream> #include <cstring> #include <cstdio&a...

2018-08-25 17:51:55

阅读数 61

评论数 0

HDU 5316 线段树 单点更新 区间最值

传送门:题目 题意: 给一个序列,有n位,下标索引为[1,n],有两种操作: 更改某一位的值 查询区间[l,r]中子序列中所有元素累加和的最大值,这里子序列的定义为:子序列中的下标映射到原序列中,下标可以不相邻,只要满足奇偶交替即可,比如:原序列是”1,2,3,4,5,6,7,8,9”,那...

2018-08-25 15:56:03

阅读数 55

评论数 0

HDU 4521 LIS变形 简单dp 线段树 单点更新 区间最值

传送门:题目 题意: 给一个由n个数组成的序列,然后从左到右取一些数组成一个新序列,这个新序列满足一些条件: 新序列是递增的 原序列取得过程中,相邻两个元素的位置间隔至少为d 原序列的个数尽可能多 题解: 第一个条件明显是LIS,第二个题目告诉我们这道题是LIS的变形,说是变形,其实...

2018-08-25 12:57:41

阅读数 47

评论数 0

HDU 5923 并查集

传送门:题目 题意: 题目比较难理解,读懂之后就是个并查集,别的博客用的可持久化并查集,本人就用了个普通并查集,也能AC,因为不会可持久化并查集啊。 有一个图,一棵树,然后树中的每个结点存的都是图中的边的信息,所以图有m条边,则树就有m个顶点。然后有q次问询,每次问询都给几个点,从树中找...

2018-08-22 20:32:52

阅读数 47

评论数 0

Codeforces 799C 暴力 线段树 RMQ

传送门:题目 题意: 一个人,想要购买两件商品,有两种货币,每件商品能且之能用一种货币购买,每件商品都有一个权重,我们想让购买的商品权重和最大,要求输出最大的权重和,如果没办法购买两件商品,输出0 题解: 第一开始看到数据范围10510510^5,想到这道题得用线段树了。然后突然想到先按权...

2018-08-21 13:42:24

阅读数 67

评论数 0

提示
确定要删除当前文章?
取消 删除