T1:五子棋(fir)
题目冗长,大概就是下类似于五子棋的nnn子棋,然后有提子操作,让对面提子即为不合法,判断输赢或是否合法
大力模拟即可
T2:迷宫(maze)
迷宫可以抽象成一个矩阵,小 K 要从(1,1)(1,1)(1,1)走到(N,M)(N,M)(N,M),而且只能往下和往右走,即小 K 只能从(X,Y)(X,Y)(X,Y)走到(X,Y+1)(X,Y+1)(X,Y+1)和(X+1,Y)(X+1,Y)(X+1,Y)。小 K 不能走出迷宫(即 X>NX>NX>N 或Y>MY>MY>M)。当然,迷宫有一些格子是被堵住的,小 K 不能从这些格子经过。 每个没被堵住的格子都有一个权值,小 K 十分喜欢 X 这个数字和异或这个运算。所以他希望所有他经过的格子的异或和为 X。现在小 K 想知道他有多少种走法,听说你是一位大佬 蒟蒻 ,于是他向你求助。
N,M<=20N,M<=20N,M<=20,Ai<=1e9Ai<=1e9Ai<=1e9
考场智障没有想到折半搜索
大概就是分别从起点和终点各搜索一半,然后统计答案
T3:雪人(snowman)
WZY 堆了 NNN 个雪人,每个雪人都有一个可爱度$ Xi$,WZY 认为两串雪人 $a1,a2…an $与 b1,b2…bmb1,b2…bmb1,b2…bm 和谐当且仅
1.n=mn=mn=m
2.a1−b1=a2−b2=…=an−bna1-b1=a2-b2=…=an-bna1−b1=a2−b2=…=an−bn
WZY 现在要从一堆雪人中选择两串雪人A=[l1,r1]A=[l1,r1]A=[l1,r1],B=[l2,r2]B=[l2,r2]B=[l2,r2](两串可以重叠,即若l1≤l2l1≤l2l1≤l2,l2l2l2 可以小于等于r1r1r1),使得 AAA 和 BBB 和谐,现在 WZY 想知道对于所有的方案中,min(∣l1−l2∣,len(A)\min(|l1-l2|,len(A)min(∣l1−l2∣,len(A))的最大值。 len(A)len(A)len(A)为 A 中所含雪人的个数。因为 WZY 还要准备 AK JSOI 2019,所以他把这个问题交给了你。n<=5e5n<=5e5n<=5e5
将式子变形能得到a1−a2=b1−b2a1-a2=b1-b2a1−a2=b1−b2
显然这是可以用预处理的
判段是否相等只需要hash起来就可以了
枚举起点二分长度就得到了一个O(n2logn)O(n^2\log n)O(n2logn)的算法
发现对于一个长度lenlenlen,最多就只有n−len+2n-len+2n−len+2个串
那么就将这些串提出来,排个序,相邻的比较∣l1−l2∣|l1-l2|∣l1−l2∣是否大于长度就可以了
时间效率O(nlog2n)O(n \log^2 n)O(nlog2n)
卡常,用hash_table(虽然我卡过去了 ),或者正解SAM
本文解析了三道算法竞赛题目,包括五子棋博弈策略、迷宫路径计数及雪人序列匹配问题,提供了详细解题思路与优化算法。
743

被折叠的 条评论
为什么被折叠?



