摘要: " 传送门 " Solution: 与上一题十分类似的,我们考虑维护一个节点的区间从左到右包含最左端点的最大值,以及从右到左的最大值,以及整体的最大值,以及当前区间的权值和。 不过方便一点,我们不用再去维护区间左右端点的值,因为有了区间的权值和,父节点的lmax=max(lson.lmax,lson 阅读全文
posted @ 2018-07-31 16:07 Patrickpwq 阅读(69) 评论(0) 推荐(0) 编辑
摘要: " 传送门 " Solution: 考虑在区间维护五个值: 一个是le 代表从左端点开始向右的最大01序列 一个是ri 代表从右端点开始向左的最大01序列 一个是all 代表整个区间最大的01序列(可以不含左,右端点) xl 代表区间左端点的值 xr 代表区间右端点的值 这样之后,每次push_up 阅读全文
posted @ 2018-07-31 15:35 Patrickpwq 阅读(243) 评论(0) 推荐(0) 编辑
摘要: " 传送门 " 只需要对懒标记做文章,每次xor1,并且我们可以发现,一个区间xor1后权值和变为了l r+1 sum,知道这两个这道题就可做了。 cpp include define N 200005 using namespace std; int n,m,a[N]; struct node { 阅读全文
posted @ 2018-07-31 15:27 Patrickpwq 阅读(152) 评论(0) 推荐(0) 编辑
摘要: "传送门" Solution: 一辆车的载重,取决于他到终点上的路的载重最小值,最小值越大,装的就越多 考虑如何找路径,如果bfs或者dfs的话,TLE。 这时想到,我们可以做一颗最大生成树(按照权值从大到小排序),在生成树的基础上,两点之间都是联通的,而且载重也是最优的。 这时考虑如何在生成树上找 阅读全文
posted @ 2018-07-31 14:46 Patrickpwq 阅读(89) 评论(0) 推荐(0) 编辑
摘要: "传送门" Solution: 并查集,维护种类。 father维护可追溯的根节点,num维护与根节点的关系,我们定义0表示x与根节点同类,1表示x吃根节点,2表示根节点吃x。 当getfather(X)==(Y) 若D==1,而num[X]!=num[Y], 则此话为假。(D==1 表示X与Y为同 阅读全文
posted @ 2018-07-31 12:06 Patrickpwq 阅读(125) 评论(0) 推荐(0) 编辑