2013-C03-team1

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

== 流水帐 ==
=== By 与星独白 ===
开场依旧我看A到C,mj看D到G,mm看H到K。A是个大水题,速度写完3min交了一次,吃了一个WA。我测了一下发现sample3不会过,又去确认了一遍题意发现自己看错了,改了以后AC了。'''A 5min 2Y'''。然后mm和mj说了J题的题意,mm说自己不会用浙大模版里的exgcd,于是让mj上去写(昨天他刚写过)。在mj写J的时候,我和mm说了C题的题意,mm和我说了I题的题意。mm说了I题的做法,我想了一下没问题,于是决定一会儿mj写完了mm上去搞I题。J题第一次交,WA了。于是mm上去写I题,mj下机看代码,我去把J题题目再看一遍确认题目没有理解错。mm很快过了I题。'''I 40min 1Y'''。这时候刷了一下board,发现zyc他们29min就过了D,而mj一开始看了D,想了一种上下界网络流的做法,我觉得不可能这么快写出来。于是我再次去看了D题的题目,然后发现了mj漏了一个条件。于是D题变成了一个水题。我上去写D题,我写了一会儿,mm在旁边应该是想清楚了D题怎么写,而我还在机子上一边写一边想。于是mm提议换他来写,让我把剩下的题目读完。我下机后觉得J题应该很快就能debug出来,于是又去看J题的代码。然后觉得做法应该没问题,就是爆long long的问题,于是决定一会儿换Java来重写一下。

mm的D题WA了两次,好在讲过一次代码之后很快发现了问题。'''D 86min 3Y'''。这个时候其他队纷纷过了B和C,而J题还没有队伍过。于是mm又马不停蹄地搞C,C题的题意没有说是否可以将多个数字视为一个数,mm和我讨论了一下,觉得应该是不能,然后就按这么写了,然后就过了。'''C 100min 1Y'''。接着是搞B题,B题其实很简单,但是题意也没说得很清楚,题目中有一句话我一直存疑,不知道该如何理解。于是和mm说了题意,然后说了有歧义的句子,讨论了一下统一了意见,然后开写,也是1Y。'''B 112min 1Y'''。

搞完了B和C,就是把J题搞定了。mj上去用Java重写了J题,但是过了sample,我和mm一起帮他看代码,改了一个错误之后还有一些问题。于是mj下机看代码,我也帮忙看,mm上去写H题。我很快发现了错在哪里,改了以后过样例了,交了过了。'''J 142min 2Y'''。搞定J题之后,mm继续写H题。很扎实地1Y了。'''H 155min 1Y'''。

H过了之后,刷了一下board,发现zyc刚刚过了F题。F题之前mj和我说了题意,我们讨论了一下,没讨论出什么靠谱的做法。当时还剩E、F、G、K题还没过。F题和G题都没靠谱的做法,E题mj能写,K题mm能写。最后决定让mj上去写E题。E题mj写了很久,中间我和mm讨论了F题和G题,都没什么结果,而且F题题意还很蛋疼……写了很久E题,mj终于写完了,但是不过sample,于是mj下机看代码,换mm上去写K题。我继续在旁边推F题。又过了一段时间,mj改了代码,能过sample了,就交了,吃了一个WA。于是继续下机看代码,mm继续写K题。然后mm写完了K题,一交就过了。'''K 226min 1Y'''。在mm写K的时候,mj和我说了他E题的做法,然后发现了一个会出问题的地方,mm写完K题之后就上去改。改了之后E题就过了。'''E 240min 2Y'''。

这时候还剩一小时,还剩F和G题两题。F题我只想到O(B*G)的做法,而用FFT又不能保证精度。G题mj提出用双向BFS,但是时间、空间复杂度都比较高,不靠谱。相对来说,我们还是觉得F题比较靠谱,而且zyc在153min就过了,于是我们全力搞了半小时的F题,三个人交换了很多次意见,mm在机子上写代码找规律。我和mj在纸上推。还剩20分钟的时候,mj和mm在想要不要水一下G题,于是mm在机子上写G题的代码。我和mj继续尝试搞出F题。可惜的是最后F题还是没搞出来,G题也没水过去。

----
== 小结 ==
=== By 猛犸也钻地 ===

最上来就看了 J,觉得可做,考虑到自己数论不扎实,于是让马甲来写。马甲写完,WA,我们三人轮流看了半天都不知所以然(马甲写这题速度不快,加上我们又都在这题上看了很久,浪费了不少时间)
在搞 J 的时候,其他各队已经纷纷过了好多题,于是我先撇开 J 去追 rank,把 I / D / C / B 依次写完了,其中 D 题 WA 了两次,先是 -1 没判,后来发现读入也有问题。好在第二次 WA 的时候很快就意识到可能是读入的问题,否则可能在这题上也浪费很多时间。

100 分钟左右的那段时间还是比较有效率的,基本每题都 10 多分钟就写完了,包括后面的 H 也是挺快的。其实写题前如果想清楚各个环节的话,一般没有什么题需要花太多时间,马甲在 E 上写了很久一部分原因也主要是因为边写边想导致的(至少我是这么觉得的),所以上机的时候不仅要保证题意理解正确,算法没有问题,写题的人自己也必须想清楚每个部分该怎么写,除非要想的东西也不多,否则边写边想还是容易降低效率的。

搞 K 的时候稍微失误了一下,看错了题意,以为是走到某个状态后不用去管也能死就结束,后来才发现是走到某个状态后无论走么走都不行才能结束。还好后者只是前面多加一个函数,在马甲调 E 的时候想了一下,然后加上去就行了。

=== By 与星独白 ===
今天开场有一个小失误,就是A题没有测完sample(一共3个case,测了前两个都没问题)就交了。然后吃了个WA,测了sample3,发现题目看错了,改了以后2Y。但是这个失误相对于这场训练后面我的发挥,真的只能算是微不足道的失误了……整场比赛我就写了A题。其中C题和B题虽然我会做,但是觉得手速不够都交给猛犸来写了。D题一开始是mj看的题,他没注意到一个重要的条件,然后想了一下很复杂的做法,然后在29min的时候zyc队过了D,我觉得可能有更简单的做法,于是又去看了一遍题目,发现了一个至关重要的条件。D题我上机的时候一边写一边想,猛犸在旁边应该是已经想好怎么写了,于是把我pia下来上去写D。F题我和mj想了很久,到最后也没想出来,但是赛后问了zyc,他稍微一提我就知道怎么做了……但是比赛的时候就是没想到做法,不得不承认数学太弱了,另外这类题做的太少了,没有那种思考解法的感觉。

我觉得我的实力在队里是最弱的,不仅算法懂得少,题目见得少,而且手速也比较慢。而且数学方面我也没有很强。我觉得接下来我亟需提高的是数学能力以及手速。因为简单题我必须能很快搞定,这样不会占太久机子,也不需要特地为了快点过而让mm或者mj来写,这样可以让他们俩有更多的时间去看题、想题。我们队最关心的应该还是搞定难题,而且是在比赛的几个小时内搞定,简单题应该要尽量快地搞定,给编程复杂度大的题目腾出时间。

我也说说我自己的优势吧。我觉得自己写蘑菇题还挺扎实的,而且读题比较认真,在纸上写代码的速度也还行。而且我觉得我的数学底子比他们俩稍微扎实一点,而我们队正是缺少一个数学好的人,所以我更需要去恶补数学方面的知识。

还是那句话吧:“早发现,早治疗”。我想通过更多地训练,发现我们队的问题,以及我亟待补充哪些知识。

=== By edward_mj ===
一开始J写得比较慢的一个原因是ax+by=c其实题目里已经保证了a < b,但是我接手的时候并不知道,最后对称地又搞了一遍。然后写完WA了,其实第一次交的版本除了爆long long就没有任何问题。我和肚子白却硬生生在这题的代码上看了很久。D题一开始看错题,有句话是说总能找到有一个词里面只有一个空的。这样就直接模拟就行了。但是当时瞄了一眼这句话,不知怎么的就以为是数据保证一定有一个解的意思……于是想出了一个复杂度也很靠谱的上下界网络流。但是后来看到team 2过了感觉就不是那么回事,肚子白重新看了一遍题目才看出这句话真正的意思。

至于E写得比较慢确实是因为我写之前没有划分好步骤和模块,这个可以说是我经常犯的错。
在前一天的训练里我也感觉到了这一点,对于步骤和模块之间用什么接口,从一开始没有一个清晰的规划,很多变量都是写到一半加上去的。这大概算是我现在的一个瓶颈,以后写之前应该尽可能地先设计出接口,降低模块之间的耦合性,这样在写每个模块的时候就可以集中注意力而不用在一堆全局变量里想怎么取得需要的信息。

F确实是没有想到,这是实力问题,和配合关系不大,这种比较巧妙的数学题目只要每次见到就过掉,并熟悉相关的知识,到了final前一定不会虚的。

流水帐

By 与星独白

开场依旧我看A到C,mj看D到G,mm看H到K。A是个大水题,速度写完3min交了一次,吃了一个WA。我测了一下发现sample3不会过,又去确认了一遍题意发现自己看错了,改了以后AC了。A 5min 2Y。然后mm和mj说了J题的题意,mm说自己不会用浙大模版里的exgcd,于是让mj上去写(昨天他刚写过)。在mj写J的时候,我和mm说了C题的题意,mm和我说了I题的题意。mm说了I题的做法,我想了一下没问题,于是决定一会儿mj写完了mm上去搞I题。J题第一次交,WA了。于是mm上去写I题,mj下机看代码,我去把J题题目再看一遍确认题目没有理解错。mm很快过了I题。I 40min 1Y。这时候刷了一下board,发现zyc他们29min就过了D,而mj一开始看了D,想了一种上下界网络流的做法,我觉得不可能这么快写出来。于是我再次去看了D题的题目,然后发现了mj漏了一个条件。于是D题变成了一个水题。我上去写D题,我写了一会儿,mm在旁边应该是想清楚了D题怎么写,而我还在机子上一边写一边想。于是mm提议换他来写,让我把剩下的题目读完。我下机后觉得J题应该很快就能debug出来,于是又去看J题的代码。然后觉得做法应该没问题,就是爆long long的问题,于是决定一会儿换Java来重写一下。

mm的D题WA了两次,好在讲过一次代码之后很快发现了问题。D 86min 3Y。这个时候其他队纷纷过了B和C,而J题还没有队伍过。于是mm又马不停蹄地搞C,C题的题意没有说是否可以将多个数字视为一个数,mm和我讨论了一下,觉得应该是不能,然后就按这么写了,然后就过了。C 100min 1Y。接着是搞B题,B题其实很简单,但是题意也没说得很清楚,题目中有一句话我一直存疑,不知道该如何理解。于是和mm说了题意,然后说了有歧义的句子,讨论了一下统一了意见,然后开写,也是1Y。B 112min 1Y

搞完了B和C,就是把J题搞定了。mj上去用Java重写了J题,但是过了sample,我和mm一起帮他看代码,改了一个错误之后还有一些问题。于是mj下机看代码,我也帮忙看,mm上去写H题。我很快发现了错在哪里,改了以后过样例了,交了过了。J 142min 2Y。搞定J题之后,mm继续写H题。很扎实地1Y了。H 155min 1Y

H过了之后,刷了一下board,发现zyc刚刚过了F题。F题之前mj和我说了题意,我们讨论了一下,没讨论出什么靠谱的做法。当时还剩E、F、G、K题还没过。F题和G题都没靠谱的做法,E题mj能写,K题mm能写。最后决定让mj上去写E题。E题mj写了很久,中间我和mm讨论了F题和G题,都没什么结果,而且F题题意还很蛋疼……写了很久E题,mj终于写完了,但是不过sample,于是mj下机看代码,换mm上去写K题。我继续在旁边推F题。又过了一段时间,mj改了代码,能过sample了,就交了,吃了一个WA。于是继续下机看代码,mm继续写K题。然后mm写完了K题,一交就过了。K 226min 1Y。在mm写K的时候,mj和我说了他E题的做法,然后发现了一个会出问题的地方,mm写完K题之后就上去改。改了之后E题就过了。E 240min 2Y

这时候还剩一小时,还剩F和G题两题。F题我只想到O(B*G)的做法,而用FFT又不能保证精度。G题mj提出用双向BFS,但是时间、空间复杂度都比较高,不靠谱。相对来说,我们还是觉得F题比较靠谱,而且zyc在153min就过了,于是我们全力搞了半小时的F题,三个人交换了很多次意见,mm在机子上写代码找规律。我和mj在纸上推。还剩20分钟的时候,mj和mm在想要不要水一下G题,于是mm在机子上写G题的代码。我和mj继续尝试搞出F题。可惜的是最后F题还是没搞出来,G题也没水过去。


小结

By 猛犸也钻地

最上来就看了 J,觉得可做,考虑到自己数论不扎实,于是让马甲来写。马甲写完,WA,我们三人轮流看了半天都不知所以然(马甲写这题速度不快,加上我们又都在这题上看了很久,浪费了不少时间)

在搞 J 的时候,其他各队已经纷纷过了好多题,于是我先撇开 J 去追 rank,把 I / D / C / B 依次写完了,其中 D 题 WA 了两次,先是 -1 没判,后来发现读入也有问题。好在第二次 WA 的时候很快就意识到可能是读入的问题,否则可能在这题上也浪费很多时间。

100 分钟左右的那段时间还是比较有效率的,基本每题都 10 多分钟就写完了,包括后面的 H 也是挺快的。其实写题前如果想清楚各个环节的话,一般没有什么题需要花太多时间,马甲在 E 上写了很久一部分原因也主要是因为边写边想导致的(至少我是这么觉得的),所以上机的时候不仅要保证题意理解正确,算法没有问题,写题的人自己也必须想清楚每个部分该怎么写,除非要想的东西也不多,否则边写边想还是容易降低效率的。

搞 K 的时候稍微失误了一下,看错了题意,以为是走到某个状态后不用去管也能死就结束,后来才发现是走到某个状态后无论走么走都不行才能结束。还好后者只是前面多加一个函数,在马甲调 E 的时候想了一下,然后加上去就行了。

By 与星独白

今天开场有一个小失误,就是A题没有测完sample(一共3个case,测了前两个都没问题)就交了。然后吃了个WA,测了sample3,发现题目看错了,改了以后2Y。但是这个失误相对于这场训练后面我的发挥,真的只能算是微不足道的失误了……整场比赛我就写了A题。其中C题和B题虽然我会做,但是觉得手速不够都交给猛犸来写了。D题一开始是mj看的题,他没注意到一个重要的条件,然后想了一下很复杂的做法,然后在29min的时候zyc队过了D,我觉得可能有更简单的做法,于是又去看了一遍题目,发现了一个至关重要的条件。D题我上机的时候一边写一边想,猛犸在旁边应该是已经想好怎么写了,于是把我pia下来上去写D。F题我和mj想了很久,到最后也没想出来,但是赛后问了zyc,他稍微一提我就知道怎么做了……但是比赛的时候就是没想到做法,不得不承认数学太弱了,另外这类题做的太少了,没有那种思考解法的感觉。

我觉得我的实力在队里是最弱的,不仅算法懂得少,题目见得少,而且手速也比较慢。而且数学方面我也没有很强。我觉得接下来我亟需提高的是数学能力以及手速。因为简单题我必须能很快搞定,这样不会占太久机子,也不需要特地为了快点过而让mm或者mj来写,这样可以让他们俩有更多的时间去看题、想题。我们队最关心的应该还是搞定难题,而且是在比赛的几个小时内搞定,简单题应该要尽量快地搞定,给编程复杂度大的题目腾出时间。

我也说说我自己的优势吧。我觉得自己写蘑菇题还挺扎实的,而且读题比较认真,在纸上写代码的速度也还行。而且我觉得我的数学底子比他们俩稍微扎实一点,而我们队正是缺少一个数学好的人,所以我更需要去恶补数学方面的知识。

还是那句话吧:“早发现,早治疗”。我想通过更多地训练,发现我们队的问题,以及我亟待补充哪些知识。

By edward_mj

一开始J写得比较慢的一个原因是ax+by=c其实题目里已经保证了a < b,但是我接手的时候并不知道,最后对称地又搞了一遍。然后写完WA了,其实第一次交的版本除了爆long long就没有任何问题。我和肚子白却硬生生在这题的代码上看了很久。D题一开始看错题,有句话是说总能找到有一个词里面只有一个空的。这样就直接模拟就行了。但是当时瞄了一眼这句话,不知怎么的就以为是数据保证一定有一个解的意思……于是想出了一个复杂度也很靠谱的上下界网络流。但是后来看到team 2过了感觉就不是那么回事,肚子白重新看了一遍题目才看出这句话真正的意思。

至于E写得比较慢确实是因为我写之前没有划分好步骤和模块,这个可以说是我经常犯的错。

在前一天的训练里我也感觉到了这一点,对于步骤和模块之间用什么接口,从一开始没有一个清晰的规划,很多变量都是写到一半加上去的。这大概算是我现在的一个瓶颈,以后写之前应该尽可能地先设计出接口,降低模块之间的耦合性,这样在写每个模块的时候就可以集中注意力而不用在一堆全局变量里想怎么取得需要的信息。

F确实是没有想到,这是实力问题,和配合关系不大,这种比较巧妙的数学题目只要每次见到就过掉,并熟悉相关的知识,到了final前一定不会虚的。

附加文件