2018年9月26日

test20180922 世界第一的猛汉王

摘要: 题意 分析 由于异色点必有连边,所以一个点的covered减去两个点共有的covered就是可存在的环数,十分巧妙。 cpp include using LL = long long; const int MAXN = 1e5 + 5; int n, m, D; std::pair p1[MAXN] 阅读全文

posted @ 2018-09-26 22:31 autoint 阅读(413) 评论(0) 推荐(0) 编辑

test20180922 扭动的树

摘要: 题意 分析 二叉查找树按照键值排序的本质是中序遍历,每次我们可以在当前区间中提取出一个根,然后划分为两个子区间做区间DP。记$f(i,j,k)$表示区间[i, j]建子树,子树根节点的父亲是第k个数的最大sum值之和。由于k只能为i 1或j+1,故状态数只有$O(n^2)$,总复杂度$O(n^3)$ 阅读全文

posted @ 2018-09-26 19:38 autoint 阅读(167) 评论(0) 推荐(0) 编辑

test20180922 打铁的匠

摘要: 题意 分析 法一:吉司机线段树 这是一个在线的$O( n + q \cdot \log^2 n)$做法。 考虑维护节点到根的权值前缀和cost,那么查询的时候区间减去子树根节点的cost就是价值。 然后由于子树dfs序连续,转化成线段树的区间查询。 对区间查询,分为4种情况: 1. 最大值都无价值, 阅读全文

posted @ 2018-09-26 17:27 autoint 阅读(347) 评论(0) 推荐(0) 编辑

test20180922 交错的字符串

摘要: 题意 分析 这个数据范围容易使人想到折半搜索。 我们将字符串分为前后两部分。如果前半部分中搜得的前缀串为{S1, S2},那么后半部分中搜得的后缀串必须为{rev(S2), rev(S1)},且为有序对。对于两侧分别枚举每个字符的归属情况,hash后用map计数即可。 代码 cpp include 阅读全文

posted @ 2018-09-26 15:49 autoint 阅读(169) 评论(0) 推荐(0) 编辑

导航