摘要: 传送门 能想到差分这题就差不多了……可惜我没想到 先维护出差分序列 于是每次操作可以将前面一个地方-1后面一个地方+1 整个序列的前缀和处处大于0且整个序列的前缀和为0 于是每个大于零的位置都需要 \(abs(dlt_i)\) 次操作才能变为零,于是操作次数可知 然后考虑最大/小体力消耗 首先所有 阅读全文
posted @ 2021-10-26 16:37 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 传送门 首先子序列经典DP 可以 \(n^2\) 暴力了 然后发现可以写成矩阵区间乘积 于是线段树维护 发现复杂度 \(27^3mlogn\),不可过 等到考完之后仔细阅读题面,发现字符集大小只有3 于是复杂度变为 \(O(4^3mlogn)\),可以通过 Code: #include <bits/ 阅读全文
posted @ 2021-10-26 16:17 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 传送门 初看应该是个换根DP之类 但我是从分类讨论贡献入手的 先转化为每个点的贡献是通过这个点的出发点权值比这个点小的使者数 发现能对一个点产生贡献的点只有三种位置:子树内,到根节点链上,到根节点链上的点的其它子树内 于是令 \(val_i\) 为 \(i\) 子树内权值比点 \(i\) 小的点的数 阅读全文
posted @ 2021-10-26 15:52 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 传送门 两种做法 第一种可以按题意模拟,dfs染色 如果一个点已经被染过了就return 这样每个点只会被染色一次,均摊 \(O(n)\) 第二种考虑每个点被染色的时间 在时间轴上差分计算贡献,也是 \(O(n)\) Code: #include <bits/stdc++.h> using name 阅读全文
posted @ 2021-10-26 15:40 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑