游寄集合
给以后的自己看的
GDOI2022pj(线上)
Day1 8:30~12:00
8:35交T1
转T2,看见 \(\oplus\) 就恶心,跳过
T3浏览了一遍没看懂题
忐忑地转T4,看到计数二字不禁喜上眉梢。看到 排成等差数列
都是公差倍数
,直接想到 \(n\ln n\) 暴力枚举,然而 \(L\) 与 \(R\) 的限制让复杂度直接平方。\(m\) 的限制完全没用,\(c_i\) 不过是用来统计答案的数字而已。答案是一个一个一个一个区间乘积的和,想到记录前缀积,再对前缀积求一次前缀和,没了。细节还是有点多的,10:16交题。
回头看T2,仍然没思路,转T3,15分钟理解了题意,发现子树信息相互影响,没法 dp
。看 subtask
,有个 \(w_i\le 100\),明摆着让我枚举 \(\max\)。再看前面 \(n\le 500\) 的 subtask
,还是可以枚举 \(\max\),然后贪心,70pts
有了。想了一下拓展到 100pts
未果,11:00交题。
全力艹T2。我还沉浸在T4的思路中,脑子里想的全是枚举极长异或和为 \(0\) 的子段。当然是没有结果的,11:45 交了 20pts
暴力滚粗。
赛后
T1炸了,\(0\le A,B,C\),不讲武德。虽然期望还是有 90pts
左右
T2码量甚至比T1还少...我就没往前缀和上想过
T3二分答案做法至今不懂
T4和同机房与外校dalao交流了一下,做法应该没错。
随后,我欣赏了一番这道唯一写出来的非签到题的代码,发现一个小问题:
const int N=1e5;
...
for(int i=1;i<=N;++i) inv[i]=fpow(i,P-2);
...
int x=inv[sm[b][i-1]];//sm是前缀积,对998244353取模的那种
nmd为什么不给大样例
期望得分直接降到 20pts
以下
出成绩后
T1期望 90pts
个头哦,当场爆零
int a[3];for(int i=1;i<=3;++i) cin>>a[i];
T4同样炸裂,一组像样例的数据都没有
总结
签到题也要看数据范围
涉及到数组就一定要 const
定范围,杜绝函数内开数组
关于异或的东西做的还是太少了
T4甩锅出题人。只要有大样例我就一定能在十分钟内改掉那个sb错误。
Day2 8:30~12:00
8:45写出T1并顺手写了个对拍,发现 \(n=1\) 和 \(n=2\) 时错了,回头看题发现 \(n\ge 3\)。昨天的毛病还是没改过来。
看T2,稍微思考了一下跑路了,8:55转T3,看到标题下面的那张大图就知道事情不对劲,果然,大%你。9:00问候着出题人的母亲看向T4,9:02看完没思路便滚了。这是我整场比赛花在T4上唯一的 \(2\) 分钟。
回头看T2,稍加思考发现,这东西跟树剖贼像,每个结点往下引出一个替换的儿子,其它所有儿子全部新标签页。特意画图思考了一下替换的儿子是否一定要是重儿子,发现不用,于是写代码过了样例。核心部分不到五行,我开始怀疑自己,但想到前一天T2的码量和紧跟T2的大%你,我放心了。
交上T2,此时是9:20。我不知怎地突然对大%你特别有信心,于是开始死磕T3。10分钟看完题,写了一个小时的代码,6个 if
套在一起,发现越写越毒瘤,于是重构,思路是分别暴力把平年和闰年的每一秒所耗电量的前缀和打出来。算了一下空间,两个长约 \(3.1\times 10^7\) 的 int
数组,240MB
左右,可行,开打。半小时后这两个前缀和的代码写出来了,一跑,时间 1.4s
左右,但当时已经是11:00了,我选择相信评测机,背水一战。
又过了20min,全部代码打完,一测样例,差 \(1\)。我当场差点把鼠标摔了。花了三分钟调整情绪,我开始仔细检查代码开头的存放单次转移所耗电量的数组,不查不知道,一查吓一跳,\(3\) 个错误。全部改正后我满怀希望地再测样例,仍然差 \(1\)。这次我倒心平气和了,我转回头去,企图再在那几个数组里面找出错误然后过样例交题做T4,哪怕写个最简单的暴力也好。
于是半个小时过去了。11:50,我面对的仍然是那份代码和与样例输出差 \(1\) 的那个数字,122240
。此刻的我气定神闲,两个半小时的洗礼让我知道我终究是不能在考场上写出大%你的,即便我用了我所能写出最可读的码风。11:55交题,期望 20pts
。
赛后
T1T2都没问题,起码比昨天好上了一些
测了几组T3的数据,错得非常离谱,应该是某块地方写炸了。至今没调出来。
想了一下T4,约20min就知道这是个最短路...我就不应该沉迷T3的啊啊啊
出成绩后
海星,T1T2没炸,T3也不出意料地保龄了。
总结
锻炼码力,核里分配时间,每题起码看半个小时