SWJTU_LightMoon Training #16~20 补题
SWJTU_LightMoon Training #16
B dp+贪心
C 计算几何
F 计算几何
G cdq分治或者树状数组 考虑容斥,ans=总对数 - 不满足条件的对数,需要观察发现不满足偏序性质的这一对,一定是在某两个排列里位置是相同的,只有一个和他们的位置不相同,所以可以对每两个排列求一次不满足题意的偏序对的个数,这样相当于某个不满足偏序的对会被计算两次,所以除以2就可以了,两个排列不满足偏序的对的问题可以转化成按第一个序列排序,第二序列的逆序对的个数问题,树状数组维护即可
H 计算几何
K 暴力 题意是选三类食物组合,每个食物有很多种配方,每个配方有很多个牌子,有些食物不能同时选,然后选中的食物有相同的配方就要用相同的牌子,其实就是set去重,求最后组数
SWJTU_LightMoon Training #17
B 并查集
题意比较难读懂,给你一个图G,n(500)个点m(10000)条边 ,然后又一棵点数为m的树T,根为1,树T的每个点对应为图的每条边
我们有q(50000)个询问 ,对于第i个询问,我们会给你一个点数为ki的集合Si ,让你对于G'=(n个点,特定边集E)内有多少个联通块。
对于我们给定的集合Si ,其所有点,以及所有点的所有祖先,都在这个集合中。 观察到n*m不大,所以可以开m个并查集,每个并查集维护的是这个点到根的并查集结果,这个可以dfs完成,复杂度为\((n*m*logn)\),对于每次查询,直接把取出所有点的并查集结果做合并就好了,复杂度为\(O(n*k*log)\)
要记住connected components为连通分量的意思。
WQF的代码
D 74 / 311 离散化+dfs
G 1 / 31 极角排序+dp
I 4 / 21 线段树+二分
J 7 / 139 线性规划
K 1 / 14 贪心+背包
SWJTU_LightMoon Training #18
C 差不多暴力就行了
[Megumin的代码] (代码什么的,当然是不存在的呀)
D 极角排序
E 因为A满足两个及以上元素的异或和不为0,那么可以存在一个数等于0,然后暴力求解即可
[Megumin的代码] (代码什么的,当然是不存在的呀)
F 计算几何
G 数据结构+最短路
I 拓扑排序 建边之后跑拓扑排序
SWJTU_LightMoon Training #19
A dp 18
C 24
F 0
H 网络流 2
I 法一:floyd 记录路径 法二:有向图,枚举点,将点拆开作为起点和终点,然后跑最短路
K 二分+贪心
[Megumin的代码] (代码什么的,当然是不存在的呀)