摘要: 1.2020 CCPC Wannafly Winter Camp Day1.E.树与路径 题目:https://pintia.cn/problem-sets/1216345450691903488/problems/1216345586482487300 题解: 2.2020 CCPC Wannaf 阅读全文
posted @ 2020-02-16 20:29 Mmasker 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 2019年的区域赛基本上就过去了,在明年区域赛前还是要多学点新东西的,以下是我的一些学习计划,希望在下一次区域赛到来之前能学懂其中的50%! 1.数据结构 主席树 https://www.cnblogs.com/zyf0163/p/4749042.html https://www.cnblogs.c 阅读全文
posted @ 2019-11-29 17:54 Mmasker 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 本人就读于浙江某双非经管类院校,今年4月真正在九峰大佬的带领下走进了ACM这条道路。 由于入门比较晚,最开始那个月我拼命在补全基础,大约在一个半月内写完了洛谷训练场(新手村+普及训练场)的大部分题,也正是在那段时间里我成功地从一个对dfs和bfs完全没有概念、对动态规划完全不理解的门外汉蜕变为一个初 阅读全文
posted @ 2019-11-29 16:14 Mmasker 阅读(518) 评论(0) 推荐(0) 编辑
摘要: struct DList { int key, value; DList *next, *pre; DList() : key(0), value(0), next(nullptr), pre(nullptr) {} DList(int _key, int _value) : key(_key), 阅读全文
posted @ 2021-09-02 11:28 Mmasker 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目大意:题目说得很清楚。 题解思路:由于T2生成随机&&修改随机,所以平均每次修改都在log级别!我们考虑对于 T1上的每个点下面再挂一个点,边权为在 T2中的深度。此时两点的距离即为两个节点新挂的节点的距离。由于边权非负,所以我们等价于维护新树上的直径。那么该如何动态维护直径呢? 可以 阅读全文
posted @ 2020-11-16 18:48 Mmasker 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 1.Codeforces Edu Round 2. E. Lomsat gelral 题意:给你一棵树,树上有n个节点,每个节点有自己的颜色,让你求每个节点子树出现次数最多的颜色之和。 题解思路:利用轻重链剖分的特性去枚举每个节点,再用数组记录一下当前节点子树上每种颜色出现的次数,最后计算答案即可。 阅读全文
posted @ 2020-11-10 15:42 Mmasker 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给了1个长度为n(1<=n<=1e5)的字符串A,和一个长度为m(1<=m<=20)的字符串B,有q(1<=q<=1e5)次询问,每次询问A[ l,...,r ]与B[ 1,...,m ]的“距离”。很显然,距离 = r - l + 1 - LCS (A[ l,...,r ] , B). 阅读全文
posted @ 2020-07-26 21:35 Mmasker 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 题解思路: 首先,我们很容易知道一个点能当第一的条件是它在超过前面所有人之前不能被他后面的人超过。那么先考虑哪些点能超过前面的所有点呢?显然需要你的加速度大于前面所有点的加速度,那么我们就可以先按照位置排序,再按照加速度排,只考虑 pos1>pos2 && a1<a2 的点即可。 我们处理出这些点以 阅读全文
posted @ 2020-07-24 16:26 Mmasker 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解思路:其实思路很简单,跑一遍费用流后记录每一条增广路的流量和花费,队这些增广路按照花费排序,之后对每次询问只需要去枚举这些增广路即可,把每条(1,x/y)的边看作是(y,x)的边,最后再对答案除y,这样就有效避免了分数出现的尴尬情况。 #include<bits/stdc++.h> u 阅读全文
posted @ 2020-07-13 15:28 Mmasker 阅读(219) 评论(0) 推荐(0) 编辑
摘要: ll p,a[MAXN],atag[MAXN],mtag[MAXN],ctag[MAXN],tree[MAXN]; void Pushup(int rt){tree[rt]=(tree[rt<<1]+tree[rt<<1|1])%p;} void Pushdown(int rt,int ln,int 阅读全文
posted @ 2020-05-17 15:38 Mmasker 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解思路:题目给了一棵n个节点的数和q次询问,每次询问是询问[L,R]区间内有多少个连通块。由于是一棵树,连通块的数量=节点数-边数,在明白这点以后就可以开始思考了,节点数很简单,就等于R-L+1,那么最重要的就是求边数。由于q有2e5次询问,因此每次算边数必须在log一下的时间内计算。这 阅读全文
posted @ 2020-05-15 14:18 Mmasker 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 好久没写网络流,今天放一套费用流模板在这。 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> PII; #define ls l,mid,rt<<1 #define rs 阅读全文
posted @ 2020-05-12 15:24 Mmasker 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解思路:先说结论,最短的最长路=该无向图的最小染色数-1。其实这很好感觉出来,但具体证明请参照狄尔沃斯定理。至于如何求无向图的最小染色数,由于数据较小,可以直接状压dp或是dfs回溯求得。 #include<bits/stdc++.h> using namespace std; type 阅读全文
posted @ 2020-04-06 16:59 Mmasker 阅读(268) 评论(0) 推荐(0) 编辑