大学的第一场比赛,甚至以前从来没有听说过,因为含金量不高(学校不认 ),所以大二大三的奆佬们有很多都没去,于是乎就多出了一点名额给我们这些大一的菜比们了。
比赛的最大特点是持续时间长,长达
24
h
24h
24h 。每个小时放一题出来,可以随时提交并立刻获得结果及实时排名,且每一题的分数随着通过的人数变多而变小,初始满分
100
100
100分,
T
6
T6
T6最后就值
74
74
74分了。关于这逆天的比赛时长,没错,从星期六早上八点打到星期天早上八点,星期天早上七点仍然会放一题(不愧是极限编程大赛)。这也是最吸引我的地方,毕竟还从来没有过通宵编程的体验,于是找了两个队友就去报名了。
星期六
7:00
从三人行变成双人行了,其中一个老哥发烧寄了。找比赛地点找半天。
8:00
开始比赛了,前五分钟给了一个不计分的题,写想对比赛方说的话,扔了一个 H e l l o Hello Hello上去,前两题就来了,商量了一下决定我写 T 2 T2 T2他写 T 1 T1 T1,可是我完全不会 T 2 T2 T2,于是写了一个 O ( N 6 O( N^{ 6 } O(N6 )的嵌套 f o r for for,赛后查了一下是 R a b i n − K a r p Rabin-Karp Rabin−Karp的二维拓展,真好又是从来没听过的东西。
9:00
小调半小时,终于过了,
T
T
T了一组,
66
66
66分满意下一题,扭头一看那老哥还在调第一题,小惨,和他说了一声我就开了
T
3
T3
T3。一眼看上去
M
<
=
18
M <= 18
M<=18,好啊状压。第一遍看错题了,没看见只能选三个人,无脑
f
o
r
for
for套
f
o
r
for
for完了之后样例直接寄了,之后一直在做无用的思考:
f
[
j
∣
n
u
m
[
i
]
]
+
=
f
[
j
]
∗
s
u
m
[
n
u
m
[
i
]
]
f[j|num[i]] += f[j] * sum[num[i]]
f[j∣num[i]]+=f[j]∗sum[num[i]]
一直在想是不是因为枚举顺序的问题导致的答案重复累加,后来突然发现这题不能这么写因为完全没法判断之前的状态
j
j
j是从谁转移来的,然后白费一个小时宣告寄了,写了一个
N
3
N^3
N3的暴力拿了
33
33
33分。
10:00
第四题来了,队友调第一题心态爆炸把 T 1 T1 T1交给我了,然后我就开始乱糊第一题。弄了一个以 r r r为关键字的小根堆,每分钟把从当前时间 i i i开始的的病人扔进去,选一个 r r r最小的拿出来,A掉了。问了一下队友他说第四题有思路,我就继续不死心回去弄第三题那个状压了。
11:00
一个小时过去,有一点吓人,第四题似乎很难,因为均分还是 99.90 + 99.90+ 99.90+。问了一下队友的情况,他在维护一些奇怪的东西, d p [ i ] dp[i] dp[i]表示以 i i i为根的子树内所有颜色为 A A A的点到他的距离之和,但是他卡在获取祖先节点值上了,我有一点思路就让他去写 T 5 T5 T5了。我写了一个暴力上跳的动作进行统计求和,每次修改暴力初始化。漫长的调试,终于达成了目的,样例过了!然后一发提交,一 W A WA WA到底。心态直接歇逼,看一眼队友他在用 P y t h o n Python Python试图水过 T 5 T5 T5。
12:00 - 14:00
两个小时一直在调
T
3
T3
T3和
T
4
T4
T4,队友一直在表达式求值,两个人人都快傻了也没吃饭。最终我开了
T
6
T6
T6和
T
7
T7
T7,
T
6
T6
T6是一道大水题,按定义求完概率直接就A了,
T
7
T7
T7是一道数学题,当时脑子瓦特了看着这个式子一直在想着
F
F
T
FFT
FFT,胡写了半天发现完全没关系,最终怒写了一发暴力
20
20
20分。考完试才想起来其实还有
40
%
40\%
40%的
M
<
=
100000
M<=100000
M<=100000的也很好写,沙比怒丢
40
40
40分。
14:00 - 16:00
这段时间过得迷迷糊糊的,十几个小时没吃东西只喝了水,
T
8
T8
T8感觉又是一个
D
P
DP
DP,或者扔到图上跑拓扑
+
D
P
+DP
+DP,然而完全不会写,最后连个暴力都懒得写了,队友放弃了表达式求值(笑死了当时两个人这题都不会写),被我骗去看
T
3
T3
T3那个状压了。
T
10
T10
T10来了一题交互题,完蛋从来没写过这种的,整个人迷茫起来了。
17:00
和队友商量了一下,决定先把有可能写出来的表达式求值和我有思路的新题写了(笑死他又被我忽悠回去写大模拟了),结果
T
11
T11
T11我一眼猜的加权并查集又假了,写了一个多小时,他妈的样例差十万八千里,饿得受不了了溜出去吃饭了。
18:00 - 20:00
第一次晚上吃这么多东西,食堂一碗面一笼包子,回宿舍又补了一碗泡面一杯咖啡,重燃斗志回到考场。 R a n k Rank Rank已经调到 200 + 200+ 200+了。
20:00 - 22:00
来了几个刚考完
C
C
S
P
CCSP
CCSP的学长照了个合照,接下来这段时间里被自己的菜锤爆了。T12队友一开始觉得是割点+最短路,然后假了,最后写了个暴力。
T
13
T13
T13需要线代??我直接一脸懵逼(什么是行列式余子式),百度十分钟完全看不懂,输出
−
1
-1
−1骗了
24
24
24分美滋滋。
T
14
T14
T14我又开始乱糊了,
D
P
DP
DP写了一个负边权树直径然后写了个
L
C
A
LCA
LCA,试图通过比较两个端点值和原路径值来直接得出答案,努力的写了一个半小时,样例过了!一发提交,T了
80
%
80\%
80%,剩下全WA了,欲哭无泪。
T
15
T15
T15又是神仙题,队友去骗分了。这段时间内完全不知道在干什么,莫名其妙的就深夜了。
22:00 - 0:00
我以为会有人睡觉准备轮班倒的,然后发现大家都十分的精神。
22
:
00
22:00
22:00发的
T
16
T16
T16是一道很有意思的题目,他给了你一个表,让你输出他给你字符串在表中的位置,这当然很简单,但是你的得分是:
(
S
h
o
r
t
e
s
t
C
o
d
e
l
e
n
g
t
h
Y
o
u
r
C
o
d
e
l
e
n
g
t
h
)
2
∗
100
p
t
s
(\frac{ShortestCode_{length}}{YourCode_{length}})^2*100pts
(YourCodelengthShortestCodelength)2∗100pts
绝了,第一次提交看着自己
1.17
1.17
1.17分,巧的是旁边的学长就
47
47
47个字符
80
80
80多分,我看着自己快
400
400
400字的代码,不知道是哭是笑。
后面的
T
17
T17
T17被放弃了,因为看不懂题,而且连暴力都不会写。
T
11
T11
T11最后发现好像暴力就能过,就去写了。每次修改直接暴力重构整棵树,然后用邻接矩阵加链式前向星混合存边,这样少去了删边的操作(我真是个天才),重构前把所有点染成
0
0
0,然后根据是从
A
A
A起点还是
B
B
B起点跑到再重新染色,样例过得很成功,但是就
10
10
10分。看了半小时发现自己读入数据读错了,默认了所有数小于
10
10
10。大骂一声自己是沙比,又提交了一次,
20
20
20分,我直接
e
m
o
emo
emo了。
1:00
进入夜场了,有人回去睡觉了,我想了想还是没走毕竟就为了体验这个(笑死),队友去写最新的
T
18
T18
T18了,我就回去补了一直没写的
T
9
T9
T9,苦苦思考二十分钟,最后写了一个前缀和优化的暴力,又骗了
50
50
50分,真好。剩下的时间就又不知道在干嘛了,改了改
T
16
T16
T16,然后又爬回去改
T
11
T11
T11的暴力了,然后愤怒的发现是因为输出忘了换行了,生气了五分钟
A
A
A掉了。
2:00
我想着不能这么浪费时间,然而 T 19 T19 T19完完全全的不会,就去写最新的 T 20 T20 T20了。 T 20 T20 T20读完题就感觉和以前写过的一个 s p f a spfa spfa多状态的 d p dp dp特别像,就大胆去写了,没想到 A A A掉了。队友的 T 18 T18 T18卡在多重背包的状态储存了,这东西我也不会,于是乎就只有 50 50 50分。
3:00 - 5:00
3 3 3点的 T 21 T21 T21和 4 4 4点的 T 22 T22 T22都极度的阴间,虽然 T 21 T21 T21的 D P DP DP式总感觉以前写过, T 22 T22 T22 50 % 50\% 50%的 N = 2 N=2 N=2感觉也能写,但是最后还是没成功实现。本来想着睡一会,但是没想到两个人都不困,我就也去改 T 5 T5 T5那个智障表达式求值去了,一个小时无果。他去拿 p y t h o n python python凹 T 16 T16 T16的短代码去了,最终获得了 13 13 13分!
5:00
5
5
5点的
T
23
T23
T23很简单就是找树的直径,然后取直径的中点作为桥的端点就行,小坑之处在于,重建图的最长路不一定一定跨岛,可能还是原来的某棵树的直径,这个改完就
A
A
A掉了,也是本场比赛
A
A
A掉的最后一道题了,至于队友,很好他又被我骗回去写
T
3
T3
T3了哈哈哈哈(我怎么一直在屁人)。
6:00
天已经亮了,不知不觉一夜没睡了,我竟然一点都不困,队友去写
T
24
T24
T24了,一个大爆搜,我又双叒叕开始划水了,一整个小时我在那试图写出
T
21
T21
T21和
T
22
T22
T22的暴力,因为当时
R
a
n
k
Rank
Rank是
120
120
120左右,想进前一百报销报名费(不是),结果发现第
100
100
100名比我高了
180
180
180分,直接萎了,磨磨蹭蹭
6
:
40
6:40
6:40了,准备迎接
7
7
7点的最后一道题
7:00 - 8:00
笑死,完全没有动脑子的欲望,上来直接写暴力, 10 10 10分钟拿了 60 60 60分,然后就彻底失去思考能力了。这时候已经有很多人走了,结果队友的爆搜打挂了,一边聊天一边看他改,最后硬生生等到 7 : 58 7:58 7:58,比赛算是完全结束了,最终成绩 R a n k Rank Rank 133 / 5561 133 / 5561 133/5561 ( S c o r e : 862.26 ) (Score: 862.26) (Score:862.26)。
也算是挺有意义的一场比赛吧(增进了和队友的感情),让我看清楚了现在的自己有多菜,很多以前感觉可以实现的功能,现在都完全没想法了,算是给了我前进的动力。
学长们拿到了全球第三,全球前
25
25
25也有
4
4
4队,壮哉我大西电!
最后队友的帅照和大合照镇楼