读题(6:10-6:20
读题时发现有几道题很熟悉。
PS:之所以晚了10分钟,是因为吃饭迟到了。。。
T1(6:20-6:40)
读完题后感觉这道题挺水的,又读了几遍题后就打出了代码,比赛感觉良好。
T2(7:00-8:00)
这道题我似曾相识,于是很快就打出了基本思路。
PS:之后Debug耗费了大量时间。
T3(8:00-8:50)
这道题和T2一样令我感到熟悉,在打出暴力的部分分代码后就开始想正解,但是毫无头绪,又调试了一会后就换T4了。
T4(8:50-9:10)
思考了一会儿,没有什么特别的思路,于是尝试写了写暴力,结果写到一半发现题意理解错了。心态有点崩。
大杂烩(9:10-9:50)
在T4崩了以后,调了下其他程序,发现T2有一个bug,查了一段时间后没查出来,又去看了看T4,重新打了一下暴力,结果又有bug。
检查并提交(9:50-10:00)
最后十分钟时放弃了把T4de出来,于是把T1、有个小bug的T2和T3都检查了一下,然后就交了。
结果:
T1和预期中一样,T2只拿了50,T3拿到了暴力的部分分。
总结:
1.关于审题
本次比赛暴露出审题仍不够认真等缺陷,如T4因审题错误重写。
2.关于知识点
本次比赛中暴露出知识点掌握不够好的问题(T4的马拉车及字符串hash解法)。说明仍需练习。
赛后订正
T1
在比赛中Ac
题意表明每个红球可以附加创造存在于桌面上的价值最大的球的价值。所以找到存在于桌面上的价值
v
a
l
val
val 最大的球,然后将每个红球的价值改为
1
+
v
a
l
1+val
1+val 之后将所有球的价值加起来即可。
T2
赛后发现递归检验时最小值取值错误。改正后Ac
T3
赛中写的是暴力算法,看了题解以后写了正解:利用数组对暴力解法进行优化。
我们用一个数组来记录每一个对
a
i
a_i
ai而言
a
i
x
o
r
(
2
x
)
a_i\ xor\ (2^x)
ai xor (2x)出现过几次,在这里由于数据较大(
2
3
0
2^30
230)所以可以用
h
a
s
h
hash
hash 来储存。
需要注意的是数据中给定的
a
i
,
b
i
a_i,b_i
ai,bi可能是相等的,因此在后续的计算中每一位都会被重复计算一遍。所以,为了方便起见,我们将每个数字的位数补到30位(高位上补零)。此时,查询到有多少个
a
i
a_i
ai和
b
i
b_i
bi相等,就减个数的30倍。同时,因为会重复,所以输出是需要除2。