写在前面: 到学校第一次打 还算可以

A

签到题,基本运算,读懂题即可

ceil(x) 是对 向上取整,floor(x) 是对 向下取整

B

签到题,读懂题即可,线性扫陷阱

C

小构造题,如果范围里有大于 的偶数,那就输出 ,如果只有一个奇数,那就分解因数,如果有除 和它本身的因数,就输出此因数和 与此因数的差,找不到就输出 ,注意 都不符合题意需特判

D

小数学题,发现 的倍数数量相对于整体是少数,所以只需要考虑倍数, 的公倍数被加一次减一次相当于没用,于是我们求出来是 的倍数但不是 的倍数的个数以及是 的倍数但不是 的倍数的个数,依次把最大的若干数和最小的若干数填进去即可

E

看到几种做法

1. 线段树(我的做法)
2. 异或前缀和
3. 分块

感觉线段树还是比较好想的,维护区间内属于 的异或和属于 的异或和,修改就是 并打 ,我做的时候出现了一些问题,导致样例能过,但是第二个点就过不去了,最后几分钟调出来了,发现是打 的方式不对,有的 不能及时下放,在 本来就为 的节点再进行修改, 应该变为 ,我忽略了这个问题,最后切了

F

基环树森林的基本做法,先处理环下树一定最优,然后找环,环中舍掉贡献最少的边,定出一个起点按顺序输出,最劣复杂度

在一个有向图中,每一个点都有唯一的一个出边,那么这个图就是一棵基环树。

G

奇技淫巧题

发现操作肯定是选非 的数做两端更优,所以只需要枚举非 的数,处理出前缀积和前缀和,然后 枚举,有人担心 过不了,其实确实过不了,考虑一些可以直接得出答案的情况,当一段数的积够大,大到一定程度,就一定取整段

数据范围告诉我们如果什么操作都不做,所有数的和最大应该是 ,当积大于这个数时,就可以省去枚举的步骤,以 为底其的对数不超过 ,枚举飞快

第一次手撕 题纪念一下

本文采用CC-BY-SA-3.0协议,转载请注明出处
作者: wsy_jim