APIO2018凉凉记

总起

这次能够去APIO其实已经很不容易了,毕竟考虑刚考完GDOI文化课后我都成文盲了。

Day0

由于教练漏帮我报吃特色菜,所以我只能够来APIO了。一个人坐飞机,这是第一次。
辗转了很久终于来到了丽都,住的是广州二中大佬住过的房间,酒店的服务还挺周到的。

Day1

又久经辗转跑到海淀区?领完东西后,很艰难地抢到一间房。
下午练习赛,题水,所以去学习其他的东西了。

Day2

结识了大佬zs,dmy等。
第一个课题讲的是折纸,我觉得光思考问题往往不够,要把每个问题搞透那才是最重要的
规定折痕的位置凸表示M,凹表示V。
课题里讲了第一个问题是,给定一张一维的纸,纸上的折痕标清楚了是M还是V。判定能否被折平。(意思是不能够交叉)
正解是将折纸的动作看作是括号序,然后根据折痕之间的长度以及不能够出现像这样的括号序 ( ) ( )
第二个问题是,一张一维的纸,只有折痕,要求判断出是M还是V,在折平的情况下最短的长度是否超过 L
这个正解还是没听太清楚,但必然是个贪心,不过跟左边的大佬交流了一下他的想法,虽然是错的,但是也启发了我(贪心)。
之后的几个问题,是二维的折纸问题,考虑到某个方块折的角度等。
能够将算法与折纸联想到一起,的确是很玄学的一件事。
第二个课题是AI。
这个我其实是最喜欢的,因为p图能够完全p得天衣无缝,是很难的,正解是将像素之间的什么差求出来,然后通过10^k的迭代将两张图合并到一起去。
其中涉及到了选择模长较大的梯度值(保留两者细节),比如高斯-赛德尔迭代法,得出n个方程。直接用新一轮的x进行原地迭代。
还介绍了一阶定常迭代理论公式。(觉得大学能够学到新鲜的东西)
接下来就讲到了博弈的AI,即如何分析整个游戏的局面,这个挺有意思的,他讲了 α β 剪枝等,我觉得博弈的精髓是:获得大量的数据,然后人为地对某些局部的局面进行精确地估价,然后进行剪枝
隔壁的大佬说他打游戏赚了钱,还会编某些AI程序,太强了。羡慕。
下午讲二分。
①Basic:二分需要找到一个关于mid的函数 f ( m i d ) ,它具有区间单调性,如果 f ( m i d ) = 0 m i d 为答案。
②Next:01分数规划,需要 R ( x ) = F ( x ) G ( x ) 最大化。
比较 F ( x ) G ( x ) m i d 0 的大小即可。
③带k限制的:意为一种东西最多能用k次。
这里是大难点。
将最多能用k次的“那个东西”统一加上那个值,然后通过二分那个值来判断究竟选多少个“那个东西”。
解题思路的精髓部分:通过二分值来控制选择“那个东西”的个数。但我还是不明白为什么最优解和原题是同一个最优解这句话。
搞通了这个,就能够解决这一系列问题了。
第四个课题,是大佬hht的二分图的证明课件。
讲了增广路的几个定理。
①增广路定理:给定一张图和一个匹配,如果图上不存在增广路,当且仅当该匹配为图的最大匹配。
②增广路引理:给定一张图和一个匹配,如果从一个未匹配点出发找不到增广 路,我们删去这个点仍然能找到原图的一个最大匹配。
③搜索树。随便找一个点为根,然后根据dep分出奇点和偶点。
④花及缩花算法。把搜索树上两条分岔的交错路通过偶点与偶点之间的边连成的奇数条边的环称为花。由于花上的点都可以成为偶点,所以不妨将它们缩成一个偶点。
最后,从二分图到三分图或一般图。//增广路定理&缩花算法。
然后就得出了一般图匹配的带花树算法。
虽然下午两个课题的内容并不陌生,但是仍然有所收获:
①以前有的东西为什么懂,但是考场上又做不出来?
对知识的一知半解,没有搞透就过。
②更懂得时间上的安排。
知道自己什么时候消化什么知识状态是最优的,之前要为消化这一些知识做好准备。当然,在讲课前是不知道讲的内容的。所以中午也硬着头皮睡觉得了。
③很多事物如果具有同一种性质,那么可以将题目缩为一个。
晚上看了看CDQ分治。

Day3

APIO正式赛。
我的电脑怎么这么烂?好心的监考人员帮我搞定了r,但是不能够设置断点什么鬼?
第二,guide编译器只要是写了一个字符串长度≥3的,第二次打就要用鼠标按。气死了。
看了看题,这次比以前都沉稳了很多。
T1 10分那档总算是思路上过来了。5+7随便用个multiset维护一下即可。
set用得不熟?花费了30min去调7分你觉得值得吗?结果T1还是只有5分。
10分怎么打?只剩最后10分钟了,打也是白打。
T2 7+10分想出来了,但是10分要用链表维护一些信息。想很容易。

T3 这题我不知道这么多分去哪儿了?!我打的是5+10+13+8,结果只有15。
我在打这道题的时候,漏看了有森林的情况,结果第一次交的时候5分我差点哭了。
马上冷静地想,挽回了10分。但是 n 100000 的不是就推一下式子就可以了吗?!为什么13分没了?对于度数 2 的,我觉得还是有个地方没想全,这8分很显然,然而还是丢了。

最后只获得了一张纸牌。

我最想说的是:75分变成了27分的最大原因,是程序实现能力还不过硬,平时训练的时候没有落实。所以也没什么好说的。技不如人。

Day4

上午讲了某些玄学的筛法。
还讲了各种筛法时间复杂度的证明。
线性筛法中,每个数可以看成一个点,然后它的父亲只有一个。
初步会狄利克雷卷积。
f g ( n ) = Σ d | n f ( d ) g ( n d )
杜教筛:求 F ( n ) = Σ i = 1 n f ( i )
努力地找出两个函数 g , h ,使得 f g = h
则最后可以得出结论: g ( 1 ) F ( n ) = H ( n ) Σ i = 2 n g ( i ) F ( n i )
时间复杂度 O ( n 3 / 4 )
洲阁筛。
函数 f ( x ) 为积性函数且 f ( p k ) 为关于 p , k 的多项式。
g [ i ] [ j ] 表示 [ 1 , j ] 中与前 i 个质数都互质的数的和,则

g [ i ] [ j ] = g [ i 1 ] [ j ] p i g [ i 1 ] [ j p i ]

然后再进行优化。
Min_25筛。
听说这个筛法比洲阁筛
下午讲的是SAM及拓展的知识,就算是巩固了一下。
最重要的是,他 提出最小质因子加速计算
即: A n s = 1 + Σ i n       f ( i ) Σ F ( i ) x n i f ( p )
其中 F ( i ) 表示 i 的最大质因子。
然后再处理个什么前缀和的。
时间复杂度 O ( n 3 / 4 l o g   n )

Day5

差点赶不上飞机?

尾声

一个赛季结束了,最重要的还是将代码实现能力提升。
以及将时间充分利用好。

猜你喜欢

转载自blog.csdn.net/huangjingyuan107/article/details/80315220