摘要:
最近常常刷一些奇奇怪怪的小题目,就随手开篇记录一下趴~ CF700B Connecting Universities —— 思维 - 分析答案上下界 分别考虑每条边的贡献。要经过这条边,说明匹配的点中有一个在子树外部,一个在子树内部。若子树内部共有 \(size[u]\) 个点,那么最大的贡献即为 阅读全文
摘要:
HNSDFZ信息组一直非常蒻的一只蒟蒻,正在朝着大佬与正解的方向不懈努力中。 目前还是一只高一的萌新,下个学期进高二就可以升级当学姐啦……٩(๑>◡<๑)۶ 呜呜呜已经高二啦!现在高二了,所有的一切都不再像高一一样可以重头来过。深感觉到自己的弱小,却也无能为力。 其实自己常常也很迷茫为什么很多东西就 阅读全文
摘要:
B. 分治。每次分治一个区间的时候统计所有跨过左右区间的区间对答案的贡献。令一个区间的左右端点分别为 a, b。那么这个区间的答案为 max(m[a], m[b], f[a] + f[b])。其中 m[x] 为 x 到中点的最大子段和,f[x] 为 x 到中点的最大前缀和。使用两个指针向两边扫,每次 阅读全文
摘要:
南京站: J. 操作:区间取max;查询:区间的石堆 + 一堆给定数目 (x) 的石堆所构成的 nim 游戏使先手必胜的先手操作个数(先手第一步的操作方案数)。 由组合游戏的结论有若区间石子的异或和 ^ x 不为 0 则先手必胜,令这个总的异或和为 S。考虑一个石堆,如果先手最开始拿走这个石堆内的石 阅读全文
摘要:
1.传递 暴力; 3.朋友 注意到最后一个进行的操作中与根节点直接相连的边权值必然是由1变0。而如果一条边原本的权值为1,则这条边的权值若要变为0则子树内的操作次数为奇数次,反之则为偶数次。由此可以发现先手与后手的胜负条件即为与根节点直接相连的边中权值为1的边的数目的奇偶性。 #include <b 阅读全文
摘要:
C. 前缀和。 #include <bits/stdc++.h> using namespace std; #define maxn 300000 #define INF 10000000 char c[maxn]; int n, ans = INF, sumB[maxn], sumW[maxn]; 阅读全文
摘要:
C. 如果S不等于1e9的话,可以直接放上k个S,再把剩下的所有数都写成1e9。如果S等于1e9,那么可以把剩下所有的数都写成1; #include <bits/stdc++.h> using namespace std; #define MAXX 1000000000 int n, S, K; i 阅读全文
摘要:
C. 贪心的发现第一只和第二只应该越近越好。这样确定了一二之间的距离之后,二三之间也是越近越好。于是阶乘枚举牛的顺序,然后贪心求出答案再对答案取max。 #include <bits/stdc++.h> using namespace std; #define maxn 1000000 #defin 阅读全文
摘要:
ExaWizards 2019: C. 注意到左移和右移的操作都不会改变魔像的相对位置,所以如果a位置的魔像最后会从左边掉出,则a左侧的所有魔像均会从其左侧掉出。通过二分找到最右边的从左边掉出的魔像,最左边的从右边掉出的魔像,中间的魔像都会被保留。 #include <bits/stdc++.h> 阅读全文
摘要:
C.Moving Pieces 走的步数与路径无关,只与棋子的初末位置有关。并且棋子的路径不会碰撞-如果碰撞,可以理解为移动了另外的一颗棋子。因此使用费用流跑一下求出最大收益。 #include <bits/stdc++.h> using namespace std; #define maxn 30 阅读全文
摘要:
C.Fair Elevator 每一站都必须要有人上车/下车,则如果把上车标记为1,下车标记为2,最后的合法序列一定是形如x个1,x个2这样的若干个段拼在一起的。所以我们暴力枚举分段点及段的长度判断是否有合法解。 #include <bits/stdc++.h> using namespace st 阅读全文
摘要:
9.26 H.HDU 6562 线段树操作特点:1.能统计出一个操作对一个区间整体的影响;2.能通过标记表示出该操作对左右子区间的影响;3.标记的含义为子区间应当进行的操作,标记应当能够合并(具有先后顺序)。此题中我们维护区间\(10^{a}\) 的和,则区间的值的增加量为 \(d * 10^{a} 阅读全文