数据结构
T1
- T2
- description 给定N个正整数 对于一个询问\((l,r)\),你需要求出\(\max(A_i\ xor\ A_{i+1}\ xor\ A_{i+2} ... xor\ A_j)\),其中\(l \leqslant i \leqslant j \leqslant r\)\(N \leqslant 12000, M \leqslant 6000\) 强制在线
- solution 求前缀和以后即变为求区间里两个数的异或最大值。 分块维护即可
- T3
- description 给你一些串,有串的出现和消失两个操作,动态查询一个串的子串有多少个出现了
- solution 在AC自动机的fail树上点修改链询问。
- T4
- solution 离线之后在AC自动机的fali树上点修改,子树询问。
- T5 [Sdoi2013]森林
- solution 启发式合并+主席树
图论
- T1
- description 给你一个\(n \times m\)矩阵,矩阵的每个元素是\(1...9\)或者\(-1\) 你需要选择一个列的排列,使得矩阵的每行去掉\(-1\)之后是单调非降的\(n \times m \leqslant 10^5\)
- solution 拓扑排序,需要加入中间点防止边数过多。
- T2 2016清华校赛 B
- description 有一个n*m的未知矩阵R,矩阵的每个元素都是0到k的整数 有c个约束条件,每个约束条件是以下的一种\(1.R(x_1,y_1)+R(x_2,y_2)<S\)\(2.R(x_1,y_1)+R(x_2,y_2)>S\) 其中\(|x_1-x_2|+|y_1-y_2|=1\) 你需要输出,是否满足所有条件的矩阵,如果有,是否唯一
- solution 由于是二分图,所以可以变为差,转化为查分约束系统。 据说解是否唯一可以通过跑最大解和最小解来判断(跑最长路和最短路)。
- T3
- description 给定n个点m条边 询问每条边属于以下哪种情况 1.一定在最小生成树上 2.可能在最小生成树上 3.一定不在最小生成树上
- solution1 在做kruskal的时候考虑一组权值相同的边。 若一条边两个端点已经在一个联通块,则一定不在最小生成树上。 否则有可能在,特别的,如果是桥则一定在。 和bzoj1016的思路基本一致
- solution2 先求出最小生成树 则最小生成树上的边有可能在,不放先假设他们一定,之后再作修正。 考虑剩下的边,若它加入以后形成的环的最大值小于它,那么一定不在,等于它的话所有等于它的边都应该被标记为可能。 打标记有两种思路,一种是倍增数组,一种是类似树形dp.
- T4 SPOJ - COMPANYS
- description 给你一个带权无向图,每条边非白即黑, 现要构造一个生成树使得恰有K条白色的边,使权值和最小
- solution 二分无限制的最小生成树和有限制的最小生成树的差,均摊到每个白色的边上。
- T5 [Sdoi2010]星际竞速 。。。看错题了,确实是有上下届的费用流