2017-C02-team3

从 Trac 迁移的文章

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

原文章内容如下:

 [[Image(Screenshot from 2017-08-18 22-14-42.png)]]
= 流水账 =
  今天Johann学长继续鸽,reku和lzw参加了比赛。

  开场lzw过掉水题ABC,reku过掉水题G,然后reku和lzw讨论了一下水题D,提出了一个O(N*N*K)的做法,lzw感觉过不了,reku说一定可以过的,然后欣喜的过了。

  之后二人开始讨论网络流题目J,lzw学长给出了费用只有X和X-1两种,reku想了个正确性不是很显然的网络流乱搞,想让lzw学长证一下,lzw学长还没证完,reku就写完了,意外的过了J。

  前六题过得还算比较顺畅,六题之后我们是第二名,然后两人讨论了I和E都表示没什么思路。然后lzw学长思考了一下大模拟F,觉得还行,开始上机写F。

  reku在lzw写F的时候,一直在撕纸玩,试图得出一些结论,然后感觉4、2和0是完全一样的,撕纸翻了翻,好像的确完全一样,于是感觉题目意义飘渺,难以理解。实际上是reku拓扑理论没有学过,智力也不够,动手能力还差导致的。

  lzw很快过了样例,然后交了一发,wa了。两人debug好久,感觉可能要用到高精度,后来又感觉这种大模拟还要高精度,出题人是狗吗?,就放弃了高精度的想法。看了看E,看了看I,又没什么思路。然后决定还是弄个高精度吧,改了十分钟,比赛结束,后两小时一动不动,打出GG。

= 总结 =

== reku ==
  前期表现尚可,后期有点糟糕。E和I都不是那种很难的题目,全力去想感觉应该都是很有希望的。F如果在看题的时候就意识到高精度的话,直接上py,也是很有希望过的。虽然只有两个人打比赛,但是感觉7——8题应该是一个比较合理的题目数。两人对高精度都表现出了逃避,这个很糟糕,也是一个很大的失误。E和I赛后仔细想了一下,感觉真的都不难,为什么比赛时候想不到呢?H题比赛的时候没有碰,不做评论了。K和L就是能力不够。

== lzw4896s ==
  前面签到题做的还算比较顺利,C题题目没看仔细贡献了一发WA,需要吸取教训,签到题要看清题目再写。D题看到题目很快想到了解法,但是感觉复杂度有点玄,没敢写,reku学长让我去试一试,而且没别的题可做才写了这题,最后竟然过了,说明对运行时间的估计还是略有欠缺,还是要通过练习积累经验。之后的表现就有些糟糕,网络流题给reku学长提供了一个小性质后就一直在E,I两题之间徘徊。 E题题目看了很多遍还是不能理解,内心就有点抵触,应该自己动手去撕一下纸带的,而不该直接甩锅给队友。 I题最后想到的乱搞方法其实和标算有些接近了,但是看到 2^n^ 个点就一口咬定是用什么分治递归来解决的,就一直往这方面靠,思路过于狭隘了。 最后策略上还是有些问题,去入坑F题的时候猜测出题人不会这么丧病要高精度,写好调出样例交上去WA了的时候大概还有一个多小时。 如果当时果断换python写说不定最后还能过掉这题。 当时还是抱着侥幸心理骗自己不会要用高精度的,于是人工构造了十来个小数据来查错,把最后的时间浪费掉了。 第一次和reku学长配合,reku学长帮我看出了代码的错误,我发现reku学长交错了题(好在是交到已经AC的题目里去了),签到题各自做,合作完成了D和G题,但是后面卡题的时候双方并没有给对方提供什么有用的思路,基本上是各想各的,之后还有待磨合。

= 教训 =
写题不能侥幸

注意不要交错题目
= 题解 =
 * I:贪心。 假设已经决定选2k+1个点连边,按坐标从左到右依次是1-2k+1号点。 那么连边<1, k + 1, 2k + 1, k, 2k, k - 1, 2k - 1, k - 2, 2k - 2 .....2, k + 1, 1>,这样得到的解是最优的。证明:可以发现这样构造的解的答案是min(dist<1, k + 1>, dist<2, k + 2> .... dist<k, 2k>, dist<k + 1, 2k + 1>). 假设最近的是点对<i, i + k>. 如果存在某个解比dist<i, i + k>更优, 那么这个解中,对于 i 和 i + k之间的k - 1个点,它们连出去的2k-2条边必须连到1...k - 1 和 i + k + 1...2k + 1这k个点上,否则最小值就比dist<i, i + k>小了.  但是当k > 1 的 时候 2 * (k - 1) > k。 根据这个性质就可以贪心了。 最左最右边各选一半,枚举最中间的点即可。  
 * E: 发现对于奇数,环变成了n和2n+2,对于偶数,变成两个n。那就记录一下每个旋转对应的值,然后对着找一找就好了,如果没有这个奇数的话,那怎样都没有,如果没有这个偶数,看看之前的奇数能不能产生这个偶数就好了   
 * F: 每次先找到最长的分数线来确定baseline,如果没有分数线找到最左边的数字所在的行就是baseline. 然后根据加和乘号左右分治,以及考虑分数线上下分治。用python实现高精度。
 * L: 首先,这个图一定要是个强联通图。然后,所有简单环一定要互质。然后就tarjan一下,染色随便找个环,对所有的因子染色就好了
 * H 待补
 * K 尽力补

流水账

今天Johann学长继续鸽,reku和lzw参加了比赛。

开场lzw过掉水题ABC,reku过掉水题G,然后reku和lzw讨论了一下水题D,提出了一个O(N*N*K)的做法,lzw感觉过不了,reku说一定可以过的,然后欣喜的过了。

之后二人开始讨论网络流题目J,lzw学长给出了费用只有X和X-1两种,reku想了个正确性不是很显然的网络流乱搞,想让lzw学长证一下,lzw学长还没证完,reku就写完了,意外的过了J。

前六题过得还算比较顺畅,六题之后我们是第二名,然后两人讨论了I和E都表示没什么思路。然后lzw学长思考了一下大模拟F,觉得还行,开始上机写F。

reku在lzw写F的时候,一直在撕纸玩,试图得出一些结论,然后感觉4、2和0是完全一样的,撕纸翻了翻,好像的确完全一样,于是感觉题目意义飘渺,难以理解。实际上是reku拓扑理论没有学过,智力也不够,动手能力还差导致的。

lzw很快过了样例,然后交了一发,wa了。两人debug好久,感觉可能要用到高精度,后来又感觉这种大模拟还要高精度,出题人是狗吗?,就放弃了高精度的想法。看了看E,看了看I,又没什么思路。然后决定还是弄个高精度吧,改了十分钟,比赛结束,后两小时一动不动,打出GG。

总结

reku

前期表现尚可,后期有点糟糕。E和I都不是那种很难的题目,全力去想感觉应该都是很有希望的。F如果在看题的时候就意识到高精度的话,直接上py,也是很有希望过的。虽然只有两个人打比赛,但是感觉7——8题应该是一个比较合理的题目数。两人对高精度都表现出了逃避,这个很糟糕,也是一个很大的失误。E和I赛后仔细想了一下,感觉真的都不难,为什么比赛时候想不到呢?H题比赛的时候没有碰,不做评论了。K和L就是能力不够。

lzw4896s

前面签到题做的还算比较顺利,C题题目没看仔细贡献了一发WA,需要吸取教训,签到题要看清题目再写。D题看到题目很快想到了解法,但是感觉复杂度有点玄,没敢写,reku学长让我去试一试,而且没别的题可做才写了这题,最后竟然过了,说明对运行时间的估计还是略有欠缺,还是要通过练习积累经验。之后的表现就有些糟糕,网络流题给reku学长提供了一个小性质后就一直在E,I两题之间徘徊。 E题题目看了很多遍还是不能理解,内心就有点抵触,应该自己动手去撕一下纸带的,而不该直接甩锅给队友。 I题最后想到的乱搞方法其实和标算有些接近了,但是看到 2n 个点就一口咬定是用什么分治递归来解决的,就一直往这方面靠,思路过于狭隘了。 最后策略上还是有些问题,去入坑F题的时候猜测出题人不会这么丧病要高精度,写好调出样例交上去WA了的时候大概还有一个多小时。 如果当时果断换python写说不定最后还能过掉这题。 当时还是抱着侥幸心理骗自己不会要用高精度的,于是人工构造了十来个小数据来查错,把最后的时间浪费掉了。 第一次和reku学长配合,reku学长帮我看出了代码的错误,我发现reku学长交错了题(好在是交到已经AC的题目里去了),签到题各自做,合作完成了D和G题,但是后面卡题的时候双方并没有给对方提供什么有用的思路,基本上是各想各的,之后还有待磨合。

教训

写题不能侥幸

注意不要交错题目

题解

  • I:贪心。 假设已经决定选2k+1个点连边,按坐标从左到右依次是1-2k+1号点。 那么连边<1, k + 1, 2k + 1, k, 2k, k - 1, 2k - 1, k - 2, 2k - 2 .....2, k + 1, 1>,这样得到的解是最优的。证明:可以发现这样构造的解的答案是min(dist<1, k + 1>, dist<2, k + 2> .... dist, dist). 假设最近的是点对. 如果存在某个解比dist更优, 那么这个解中,对于 i 和 i + k之间的k - 1个点,它们连出去的2k-2条边必须连到1...k - 1 和 i + k + 1...2k + 1这k个点上,否则最小值就比dist小了. 但是当k > 1 的 时候 2 * (k - 1) > k。 根据这个性质就可以贪心了。 最左最右边各选一半,枚举最中间的点即可。
  • E: 发现对于奇数,环变成了n和2n+2,对于偶数,变成两个n。那就记录一下每个旋转对应的值,然后对着找一找就好了,如果没有这个奇数的话,那怎样都没有,如果没有这个偶数,看看之前的奇数能不能产生这个偶数就好了
  • F: 每次先找到最长的分数线来确定baseline,如果没有分数线找到最左边的数字所在的行就是baseline. 然后根据加和乘号左右分治,以及考虑分数线上下分治。用python实现高精度。
  • L: 首先,这个图一定要是个强联通图。然后,所有简单环一定要互质。然后就tarjan一下,染色随便找个环,对所有的因子染色就好了
  • H 待补
  • K 尽力补
附加文件