摘要: 树形dp dp\[i]\[0]表示从i点及其子树中买入的最大收益(负数) dp\[i]\[1]表示从i点及其子树中卖出的最大收益(正数) include define INF 0x3f3f3f3f define full(a, b) memset(a, b, sizeof a) define FAS 阅读全文
posted @ 2019-07-16 21:07 清楚少女ひなこ 阅读(153) 评论(0) 推荐(0) 编辑
摘要: tarjan缩点 正解似乎是并查集,但是这题可以用tarjan乱搞来着。。 缩完点之后,不再同一个强连通分量的点可以直接连边,连到度数最多的点所在的联通块,然后只要把与这个点不相邻的k条边删了,再直接连到这个度数最多的点上就好了。 这里要判断一下加起来是否大于最大度数n 1,因为当所有点都和已经和度 阅读全文
posted @ 2019-07-16 19:30 清楚少女ひなこ 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 二分答案 可以发现一定是有解的,对于一个数组,每一次操作实际上是把和 1,最后一定可以变成一个01的序列 枚举最小值,然后统计上升和下降的次数。因为是统计最大的最小值,所以在二分答案偏小时统计答案。 阅读全文
posted @ 2019-07-16 17:05 清楚少女ひなこ 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 并查集 + 位运输 先用并查集处理每个联通块,并把权值排序。 然后对于 a (c & d) 可以把c和d才成二进制,同样位置上存在1才对答案有贡献,所以我们对每个联通块,枚举每个位置是1的数量,算出贡献就好了。 include define INF 0x3f3f3f3f define full(a, 阅读全文
posted @ 2019-07-16 14:33 清楚少女ひなこ 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 莫队 直接莫队就好了。。统计每个字母出现的次数= = include define INF 0x3f3f3f3f define full(a, b) memset(a, b, sizeof a) define FAST_IO ios::sync_with_stdio(false), cin.tie( 阅读全文
posted @ 2019-07-16 09:01 清楚少女ひなこ 阅读(97) 评论(0) 推荐(0) 编辑