09 2021 档案
摘要:(事实上,总是可以让每一场都比,因此并没有意义) 当时,有如下做法—— 新建一个点,向所有奇度数的点连边,并对得到的图求欧拉回路,那么只需要将欧拉回路上的边交替染色,即可保证(路径长度为奇数时的起点),去掉新建的点后仍有$|s_
阅读全文
摘要:记为时刻当前cpu使用率,为的历史最大值 不难发现,问题即要支持:对区间赋值和区间加;查询和的区间最大值 在线段树的节点上维护和一个操作序列(类似懒标记),序列中的元素为操作(赋值或加),并
阅读全文
摘要:整体思路类似于hdu5306,在线段树上维护区间内最大值及个数、严格次大值、最小值及个数、严格次小值和区间和,即可支持查询 修改时,区间加直接维护即可,区间取的做法与该题相同—— 修改时,搜索至完全覆盖的区间后再分类讨论: 1.若修改值大于严格次大值,可以打上懒标记
阅读全文
摘要:segment tree beats模板题 在线段树上维护区间内内最大值及个数、严格次大值和区间和,即可支持查询 修改时,搜索至完全覆盖的区间后再分类讨论: 1.若修改值大于严格次大值,可以打上懒标记并维护上述信息 2.若修改值不超过严格次大值,继续递归下去 (另外,该信息显然
阅读全文
摘要:考虑对于确定的排列,如何求出其(交换后)会得到的排列—— 令为在之前比大的元素个数(其中),显然排列合法当且仅当 注意到每一次交换至多只有初始靠后的元素减小1,因此交换次数至少为$\s
阅读全文
摘要:即QTREE5和QTREE6组合,即将原本维护子树范围内点数改为维护子树范围内最小值即可,由于最小值没有可减性,因此需要使用set (虽然形式上与QTREE5类似,但QTREE5维护的信息更巧妙一些,而这题比较直接) 另外关于make_root中没有rev的修改,实际上也不需要改变 时间复杂度为$o
阅读全文
摘要:合理的正解大概是动态点分治,这里给出其实现 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define N 100005 4 struct Edge{ 5 int nex,to; 6 }edge[N<<1]; 7 multiset<int>S
阅读全文
摘要:将奶牛的状态用序列来描述,其中表示第头奶牛的位置(奶牛数量为) 下面,先来考虑对于某个特定的如何处理: 对于一条简单路径,如果路径中(不包括端点)所有点度数均为2且端点的度数均不为2(允许为1),则称该路径为一条"
阅读全文
摘要:类似于[loj2553] 对第一棵树边分治,对第二棵树建立虚树,并根据直径合并的性质来处理第三棵树(另外在第三棵树中计算距离需要使用dfs序+ST表做到优化) 总复杂度为,可以通过 1 #include<bits/stdc++.h> 2 using name
阅读全文
摘要:结论 注意到如果周围有偶数个1,对操作显然不会改变,因此不妨强制操作的点周围要有奇数个1,不难发现此时恰好会改变该点,即令 称合法当且仅当其能被得到,问题即统计合法序列数 显然操作是可逆的,因此$\{a_{i}
阅读全文
摘要:将所有线段的端点(即和)离散,并按照从小到大排序 定义表示前条线段在位置之前最多能覆盖的长度(默认覆盖到,允许覆盖到之后,但该部分不计入覆盖的长度),转移对第条线段的方向分类讨论: (关于"
阅读全文
摘要:为了方便,不妨先将和都减小1,其意义即为移动的次数 注意到老鼠向下移动和猫向上移动对于第2个条件是等价的,对于第1个条件即要求都恰好移动次,那么对应的方案数即为,乘上此系数后不妨将两种操作都看作仅有老鼠向下移动次 此时,即猫只能向右移动,因此相
阅读全文
摘要:将方格(参考题目)看作一个点,相邻的两点若颜色相同则连边,即得到一张网格图,而每次询问即求子矩形内的点导出子图对应的连通块数 注意到网格图也是平面图,根据欧拉公式有(其中和分别为点数、块数、边数和连通块数),那么不妨去求和 显然$V=(x_{
阅读全文
摘要:考虑不断找到以下两种类型的边,并维护答案: 1.终点出度为0的边,那么此时即令 2.(在没有"终点出度为0的边时",即优先删除第1类边)剩余边中最大的边,注意到能走到的每一个点都有出边,且其限制
阅读全文
摘要:称区间的"信息"为其的答案和第一个、最后一个大于的位置,显然通过和的信息可以合并得到的信息 考虑分块,将其按的块大小分块,区间查询时求出散块每一个位置的信息(将其看作一个区间)和每一个整块的信息,之后即可$o
阅读全文
摘要:做法1 以为块大小分块,并对每一个块再维护一个排序后的结果,预处理复杂度为 区间修改时将整块打上标记,散块暴力修改并归并排序,单次复杂度为 区间查询时在整块中二分,散块暴力枚举,单次复杂度为$o(\frac{n}{K}\log K+
阅读全文
摘要:做法1 对于每一个询问,直接暴力在每一个序列中二分查询 时间复杂度为 做法2 将所有序列合并后排序,并对每一个元素预处理出每个序列中第一个大于等于其的元素(位置),那么只需要在总序列中二分并输出该位置预处理的答案即可 关于这个预处理,显然只需要从后往前扫描一遍总序
阅读全文
摘要:对答案序列求一个高维后缀和,再通过差分将其解出,后者复杂度为 对于求后缀和后的结果,即01序列仅要求1处有边(不要求0处没有边),那么也即要求将原图划分为若干条长度给定且没有公共点的链 不妨先去枚举链的长度,假设为,要求满足
阅读全文
摘要:注意到仅关心于每种数个数的奇偶性,并且以此法操作不影响结果 对其使用bitset维护,即可在的复杂度内完成操作1,2和4 对于操作3,即是一个经典的卷积,记为第个集合对应的bitset(下标范围为),那么构造倍数
阅读全文
摘要:将棋盘黑白染色,即构成一张二分图 将状态用一张二分图和一个点描述(分别为仍未被经过的点的导出子图和当前棋子所在位置),并称将要移动棋子的一方为先手 结论:先手必胜当且仅当一定在的最大匹配中 对该结论归纳,显然时显然成立 若时成立,考
阅读全文
摘要:(不妨将下标改为从1开始) 参考loj2265中关于杨表的相关知识 构造一个行且第行有个格子的杨表,依次记录其每一次增加的时间(范围为) 不难发现,条件即变为要求得到的杨表为标准杨表 另一方面,每一个标准杨表都对应一组方案,
阅读全文
摘要:以下内容参考2019年集训队论文《浅谈杨氏矩阵在信息学竞赛中的应用》 1.前置知识 杨表 标准杨表:一张网格图,满足以下条件—— 1.设其有行、第行有个格子(格子左对齐),则 2.每一个格子内有一个正整数,且每
阅读全文