写在前面: 到学校第一次打 还算可以
A
签到题,基本运算,读懂题即可
ceil(x)
是对 向上取整,floor(x)
是对 向下取整
B
签到题,读懂题即可,线性扫陷阱
C
小构造题,如果范围里有大于 的偶数,那就输出 和 ,如果只有一个奇数,那就分解因数,如果有除 和它本身的因数,就输出此因数和 与此因数的差,找不到就输出 ,注意 都不符合题意需特判
D
小数学题,发现 的倍数数量相对于整体是少数,所以只需要考虑倍数, 的公倍数被加一次减一次相当于没用,于是我们求出来是 的倍数但不是 的倍数的个数以及是 的倍数但不是 的倍数的个数,依次把最大的若干数和最小的若干数填进去即可
E
看到几种做法
1. 线段树(我的做法)
2. 异或前缀和
3. 分块
感觉线段树还是比较好想的,维护区间内属于 的异或和属于 的异或和,修改就是 并打 ,我做的时候出现了一些问题,导致样例能过,但是第二个点就过不去了,最后几分钟调出来了,发现是打 的方式不对,有的 不能及时下放,在 本来就为 的节点再进行修改, 应该变为 ,我忽略了这个问题,最后切了
F
基环树森林的基本做法,先处理环下树一定最优,然后找环,环中舍掉贡献最少的边,定出一个起点按顺序输出,最劣复杂度
在一个有向图中,每一个点都有唯一的一个出边,那么这个图就是一棵基环树。
G
奇技淫巧题
发现操作肯定是选非 的数做两端更优,所以只需要枚举非 的数,处理出前缀积和前缀和,然后 枚举,有人担心 过不了,其实确实过不了,考虑一些可以直接得出答案的情况,当一段数的积够大,大到一定程度,就一定取整段
数据范围告诉我们如果什么操作都不做,所有数的和最大应该是 ,当积大于这个数时,就可以省去枚举的步骤,以 为底其的对数不超过 ,枚举飞快
第一次手撕 题纪念一下