摘要:
传送门 ** 出现最大路径权值就应该联想到克鲁斯卡尔重构树,我们对于克鲁斯卡尔重构树求一遍dfs序,维护所有白色点的最大最小dfn(包括出发点),求出最大最小dfn的最近公共祖先既是答案。注意需要特判一下除了本身以外没有白色点情况。** #include <bits/stdc++.h> int n, 阅读全文
摘要:
传送门 解题思路: ** 首先考虑如果字符集大小不是1e5的写法:如果字符集大小为26,我们首先对于这整棵树求出子树大小,然后构建出AC自动机的fail指针,我们会发现每个点的答案就是fail指针上所有结点的子树大小,下面是原树。** ** 我们可以把边权转化为点权来理解,也就是把每条边父亲与儿子的 阅读全文
摘要:
传送门 题目大意: ** 给定一个有n个点的树,我们可以任意选择一个点作为起点,这个点可以跳到跟自己距离为1或者距离为2的点,已经到达的点不能再到达(最终必须回到起点),询问是否存在一种方案可以从一个点出发经过所有的点最终再回到这个点来。** ** 输入一个整数n。紧接着输入n-1条边。** 大致思 阅读全文
摘要:
传送门 题目大意 ** 给定一个无向图,我们定义图中有四种点,一种是黑色的点表示终点,并且黑色的点始终是1号点,一种是红色的点,一种是灰色的点,最后一种就是没有颜色的点。** ** 游戏规则:我们必须移动任意一个灰色的点到相邻的点上,如果灰色的点移动到了红色的点上,那么我们可以移动其他灰色的点继续上 阅读全文
摘要:
传送门 详细题解传送门 ** 抄的ygg代码,向在这里说一下刚开始没看懂的部分。** ** 求答案的时候是把所有的当前为止的所有数值加起来减去一个从1开始并且公差为1的等差数列的前size项和。其中size是当前最多能用到哪个位置,满足前size项能构成1,2,3,....,sz这样的形式。** * 阅读全文
摘要:
传送门 ** 需要的前置知识:线段树合并。** ** 感觉会了线段树合并这个就很简单,线段树分裂就是在把一颗权值线段树值域在[x, y]的区间分裂出来单独成一个线段树,那么我们只需要从新树q和旧树p的根节点一起走,如果走到当前p被[x, y]完全包含的路径就把p的编号给q,并且把p改为0就行了,注意 阅读全文
摘要:
传送门 ** 我觉得大模拟就是需要多创建函数,很明显我在这方面还有很多不足。** #include <iostream> #include <algorithm> #include <cstring> #include <set> #include <map> #include <deque> #i 阅读全文
摘要:
传送门 挂个题,免得自己忘了。 #include <iostream> #include <algorithm> #include <cstring> typedef long long ll; typedef std::pair<double, int> PDI; const int N = 1e 阅读全文
摘要:
传送门 大致题意: ** 给定一个n和m,表示有区间大小为n,进行m次操作。** ** 输入m行,每行3个数字v, l, r。如果v等于0则表示查询[l, r]内桃子的数量,如果v不为0则表示给[l, r]区间修改全部加v,如果有某个点数量+v小于0,则修改为0即可。** 大致思路: ** 这个题和 阅读全文
摘要:
传送门 大致思路: ** 观察发现,茉美香胜利会叠加对手所有状态,茉美香失败会被对手叠加所有状态。我们可以用矩阵[a1, a2, b1, b2]表示两个人的状态(其中a1, a2表示茉美香, b1, b2表示对手)茉美香赢了之后的状态是[a1 + b1, a2 + b2, b1, b2], 茉美香输 阅读全文