上一页 1 2 3 4 5 6 7 8 9 ··· 19 下一页
摘要: 矩阵快速幂 可以找到规律。。答案是第2 k + 3项减1,直接矩阵加速就好了 阅读全文
posted @ 2019-07-17 16:13 清楚少女ひなこ 阅读(170) 评论(0) 推荐(0) 编辑
摘要: LCA + 树状数组 要尽量删除少的点来满足答案,那么受限考虑两个点的LCA,这样删除以后可以获得最大收益即该点的子树任意一点无法到达子树外任意一点。 删除顺序的选择应该是先删除LCA深的较大的,可以画图试想一下。。先删除高的LCA,如果还有点对的LCA在其子树内,那我们还需要对删除一次,而如果我们 阅读全文
posted @ 2019-07-17 14:53 清楚少女ひなこ 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 思维 把数组扩大一倍,然后找连续的大于0的最长的一段即可,注意结尾特判一下。 阅读全文
posted @ 2019-07-17 10:14 清楚少女ひなこ 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 树形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) 编辑
摘要: 状态压缩 + 模拟 把AB串压缩成二进制,A用1表示,B用0表示。 枚举所有问题的子集,选中的问题用1表示,其余的用0表示。对于每个子集,我们去和所有问题按位与,这样对于选中的问题,答案是A的都是1,答案是B的都是0,不同的回答得到的状态也不同。 最后统计每个子集是否有超过k组问题不一样就行了。 阅读全文
posted @ 2019-07-15 21:04 清楚少女ひなこ 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 01背包 + 思维 首先可以发现,开头是1的要分开要切一次,中间的切两次,末尾是1的切一次。 把切的次数看成花费,1的个数看成价值,就可以01背包求解了。 但是有一点要注意,中间的连续1的串如果放在末尾,其实有一个可以少切一次,所以我们不用花费那么多,比如切k次,我们的花费算出来是有的答案是k+1, 阅读全文
posted @ 2019-07-15 18:44 清楚少女ひなこ 阅读(163) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 19 下一页