上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 30 下一页
摘要: Nasta Rabbara 题意:简单来说就是, 现在有 n个点, m条边, 每次询问一个区间[ l , r ], 将这个区间的所有边都连上, 如果现在的图中有奇数环, 就输出 “Impossible”, 否者就输出 ”possible“。 题解: 步骤1:我们先找出每个最小的 [ l, r] 当这 阅读全文
posted @ 2018-08-21 13:52 Schenker 阅读(319) 评论(1) 推荐(0) 编辑
摘要: 题目传送门 题解: 首先关于二分图的性质, 就是没有奇环边。 题目其实就是让你判断每个时段之内有没有奇环。 其次 lct 只能维护树,(反正对于我这种菜鸟选手只会维护树), 那么对于一棵树来说, 填上一条边会形成奇数环,或者偶数环。 现在我们考虑偶数环, 对于偶数环来说, 如果加上一条边都能使得这个 阅读全文
posted @ 2018-08-21 10:35 Schenker 阅读(138) 评论(0) 推荐(0) 编辑
摘要: Anton and Permutation 题意:给定一个 1-n的排列, 现在有m次操作, 每次操作交换 a[l],a[r] 求交换完之后整个序列的逆序对数是多少。 题解: 树状数组套主席树去维护。 感觉是一个主席树 + 树状数组套动态开点的线段树啊。 好久没写主席树了 都不会写了。。。 每次交换 阅读全文
posted @ 2018-08-18 09:41 Schenker 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 题解:先将所有的边按照 a 从小达到排序, 类似于最小生成树的方法, 用并查集维护2个点是否联通, 每次处理一条新的边的时候, 先判断这2个点是否联通, 如果不连通就把这2个点连边,如果这2个点已经联通了,那么如果新加上这条边之后就会和原来的链构成一个环, 我们再去掉这个环上b最大的那条边, 每次处 阅读全文
posted @ 2018-08-17 13:44 Schenker 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 1 struct FastIO { 2 static const int S = 1310720; 3 int wpos; 4 char wbuf[S]; 5 FastIO() : wpos(0) { } 6 inline int xchar() { 7 static char buf[S]; 8 阅读全文
posted @ 2018-08-17 13:18 Schenker 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 这里比上次多了几个操作。 1. make_root(u) 换根节点, 先access(u), 再splay(u),将u移动到splay树的最顶上, 现在这棵splay对于root来说 只有左子树上有东西, 右子树上没有东西, 那么交换一下左右子树, 再打个标记, 这样就变成了左子树没东西,右子树上有 阅读全文
posted @ 2018-08-16 10:20 Schenker 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 上一次用分块过了, 今天换了一种lct(link-cut tree)的写法。 学lct之前要先学过splay。 lct 简单的来说就是 一颗树, 然后每次起作用的都是其中的某一条链。 所以每次如果需要用到一条链, 就要先 access 一下某个位置, 到root, 将其他的非法的东西抠掉。 并且 一 阅读全文
posted @ 2018-08-14 16:33 Schenker 阅读(147) 评论(0) 推荐(0) 编辑
摘要: Tree 题意: 给你一颗树, 每一个节点都有一个权值, 如果一个石头落在某个节点上, 他就会往上跳这个的点的权值步。 现在有2种操作, 1 把一个石头放在 x 的位置 询问有跳几次才跳出这棵树, 2 修改某个节点的权值。 解法:树上分块, 用dfs分好块之后。 对于每一块都处理出如果石头落在某个位 阅读全文
posted @ 2018-08-14 08:28 Schenker 阅读(442) 评论(0) 推荐(0) 编辑
摘要: Ringland 题意: 在一个环上有n个男生, n个女生, 现在要求每一个男生与女生配对, 求总代价最小。 题解: 如果2个男生到女生的路交叉了, 那么我们交换这2个男生的路, 总代价是一定会变得小的。 所以组合方式是线性的. 假设有3个男生 3个女生, 并且都已经排好序了。 搭配方式一共有3种。 阅读全文
posted @ 2018-08-11 10:09 Schenker 阅读(596) 评论(0) 推荐(0) 编辑
摘要: 一道操作很多的splay的题目。 还是和原来一样, 减少代码量, 在最左边和最右边都添加一个新的虚节点。 每一个节点都维护 从左端点开始的最大连续子序列, 右端点开始的最大连续子序列, 可以不取, 即为0, 还要维护这段区间的最大值。 每次Update的时候更新数据。 每次翻转的时候, 要把这个点的 阅读全文
posted @ 2018-08-10 09:57 Schenker 阅读(177) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 30 下一页