摘要:
多项式算法: FFT: #include<bits/stdc++.h> using namespace std; int read() { int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getcha 阅读全文
摘要:
F1. Alice and Recoloring 1 题意:给定一个 n * m 的 0 1 矩阵,你需要使用以下四种操作使得个矩阵全为 0 ,求出最小的代价。 代价为 1 的第一种操作:反转矩阵的某个左上子矩阵。 代价为 2 的第二种操作:反转矩阵的某个左下子矩阵。 代价为 4 的第三种操作:反转 阅读全文
摘要:
E. Bored Bakry 题意:给定一个长度为 n 的序列 an ,找出最长的 good 子序列的长度。当一个序列 al-r 满足它的 & 大于它的 ^ 时,我们称该序列是 good 序列。 分析:来分析一个 good 序列性质。 不妨设一个序列的 & 为 X ,一个序列的 ^ 为 Y 。 X 阅读全文
摘要:
C. Bakry and Partitioning 题意:给定一棵树,每个节点有权值。将这棵树分为若干个块,使得每个块的异或和都相等,且块的个数不能多于 k 。问是否可行。 分析: 求出整棵树的异或和,设为 sum 。 如果 sum 为零,显然可行。 如果 sum 不为零,且 k < 3 ,不可行。 阅读全文
摘要:
在数轴(树)上有若干白点与若干黑点,要求按题意对它们进行匹配。 一、小清新模拟费用流。(4849: [Neerc2016]Mole Tunnels) 题意:一颗高为 log(n)的树。首先每个节点上有若干白点,然后每一个时刻在某一节点上激活一个黑点。黑点与白点匹配的代价为两点距离。求每一时刻被激活的 阅读全文
摘要:
一篇十分详尽的讲稿 一.概念: 对于关于字符串S的SAM,它将包含且只包含S所有子串。 二.关键(endpos类): 对于一个子串T,它在原串出现的位置的右端点组成的集合为它的endpos集合。 对于一个子串有其唯一的endpos集合,对于一个endpos类包含了多个子串。 关于一个字符串的任一en 阅读全文
摘要:
题面 容易想到原图由海拔高度划分成两大连通块。 于是就可以套上最小割了。 由于点数过多,可以将网络流最小割转换为其对偶图最短路。 #include<bits/stdc++.h> using namespace std; int read() { int x=0,f=1; char ch=getcha 阅读全文
摘要:
题面 • 线段树维护的题,关键在于合并区间答案。 • ans 数组记录每一段区间的答案。 • 然后会发现对于每一个子序列,有两种点在当前子序列中一定满足要求: 1. 子序列中的第一个点。 2. 子序列中权值最大的点。 • 而且 pushup 时,左儿子的 ans 值会被父节点全部接受。 • 通过上面 阅读全文
摘要:
题面 • 如果没有撤销操作的话,它无非就是单纯的线段树。 • 如果加上撤销操作的话,它还可以是单纯的线段树。 • 把撤销操作看做是另一维的限制,那么修改与其对应的撤销就可以当做一个二维 的修改。 • 将询问的点取出来后建一棵 K-D tree 就可以当做线段树操作了。 1 #include<bits 阅读全文
摘要:
题面 • 平面是二维的,第 K 大是相对的。 • 单纯的 K- D 似乎并不能解决(反正我不会)。 • 第 K 大和二分是紧密相关的。 • 二分之后的判定就是一个二维数点问题。 • 所以我们可以线段树套 K-D tree 。 1 #include<bits/stdc++.h> 2 #define l 阅读全文