Day 1:
8:30:
睡懒觉,一觉睡到 8:30,“嘟嘟嘟”的电话声响起,迷迷糊糊睁开眼睛,快点,去成都七中……
没错,我连今天要考试都不知道(其实昨天老师给我发了消息的,只不过在学数学,没看),于是,坐出租车,一个人火速赶去……
路上可真堵,头昏昏的,想睡觉。
10:10
下车,进校门,直登 5 楼(不过是坐电梯),进了机房,人挺多啊,目测 50 人以上,找个靠窗户的位置坐下。
先看题,总共 4 题,T1 是个构造题,T2 看数据范围应该是个 DP,T3 看这题目背景应该是个模板(脑袋仔细回想了一会儿,嗯对,没学过),T4 跟区间有关系,目测是个线段树。
看题+理解题意耗时 20 分钟。
10:30
权衡了一下,先写 T4,其题目大意是:
给出一个序列,然后给出多个询问,每个询问给出多个区间,每一个区间求范围内的最小公倍数,然后输出这些区间答案的最小公倍数。(答案对998244353取模)
看起来很绕,其实比较好理解, 我的初始思路是:直接维护一个线段树,每个节点存的是区间的最小公倍数,嗯对,就这么 easy!
看了看数据范围,诶,线段树貌似可以直接 A 掉这题,嗯对,样例过了,大样例呢?找了半天没找到,等老师过来传一下。
11:00
T4 写完了,准备写 T1,是个构造题,题意如下:
有多个骰子,每面都有一个正整数(在 [0, 10^6 ] 以内),每个骰子的六个面上数字两两不同,然后在给出一个正整数 k,要求同时投出所有骰子,所有骰子朝上面上写有数字的异或和都是 k 的倍数。(要求构造每一个骰子上面的数字)
看到异或了,可以考虑每一位的贡献,感觉可以 Trie 树来拆位考虑,写了 20 多分钟,后面发现,构造序列之后,验证答案的时间复杂度是 O(6^n),直接就爆掉了,感觉分还不如根据性质分类讨论分多,连忙删掉代码,考虑重构……
发现测试数据集 1 满足 n = 1,有着 10 分,这样直接输出 k 的倍数就行,但是得特判一点儿,k 的 6 倍如果大于 10^6,那么也是不满足的。
然后还有一个数据集满足 k = 2,想了想,2 的二进制位为 10,感觉可以 1 2 的直接输出。
这样好像 30pts 了,看 T2。
11:35
老师回机房了,过去要大样例,回过头来看 T4,测了一下,诶,怎么不对!调试了几分钟,猛然醒悟: