Wannafly Summer Camp Day5

Rank Solved A B C D E F G H I J K
40/113 2/11 Ø . . O Ø . . O Ø Ø .

O: 当场通过

Ø: 赛后通过

.: 尚未通过

A 矩阵乘法

upsolved by chelly


chelly's solution

B 字符串的幂

unsolved


C 生命游戏

unsolved


D 数格点

unsolved


E 数据排序

upsolved by chelly


chelly's solution

dp[S]表示已经取了S这个集合里的元素作为最大的|S|个评分,然后枚举子集表示下一次取的那些相同评分的元素
时间复杂度\(O(n \times 3^n)\)

F 平衡二叉树

solved by chelly


chelly's solution

f(i)和g(i)分别表示高度为i的子树,高度差不超过d的情况下,子树的点数最大值/最小值
f(i)显然是\(2^i-1\),g(i)可以通过递推得到

G 数组合并

unsolved


H 卡牌游戏

solved by ch


ch's solution

I 游戏

upsolved by chelly


chelly's solution

首先最暴力的思路就是一个带删除的并查集,但是考虑一个度数很大的点不断的上下线,如果每次都去遍历它的相邻点去合并显然会超时。
考虑big small
对于度数>=sqrt(m)的点,我们称其为大点,否则我们称其为小点
对于小点,我们可以遍历它的所有相邻节点,对于大点,我们就需要考虑考虑如何处理了
显然大点的数量不会超过sqrt(m),对于每个大点,我们去用队列记录它在离线时候收到的组队请求
对于一个新上线的大点,首先我们将其恢复到它上次离线时候的集合,然后遍历它收到的组队请求进行合并
这样复杂度就是\(O(m^{\frac{3}{2}}+n)\)

J 魔法阵

upsolved by chelly


先二分答案r变成一个判定问题,现在问题变成了有三个半径都是r的圆A,B,C,能否从每个圆里面各点一个点,使得这三个点形成一个等边三角形
我们可以以A为中心,将B转动60°到B',判断以B'为圆心,2r为半径的圆与以C为圆心,r为半径的圆是否有重叠部分即可
注意旋转60°有两个方向

K 排队

unsolved


Replay

本场由chelly、ch线下打的。
开场chelly过了F题的签到,然后发现其它题不太可做的样子……?ch则一直在搞H,但搞来搞去发现样例搞不出来,卡了一下午……后来得知题面叙述有问题……也是很无奈

posted @ 2018-08-12 22:32  AHU_Amadeus  阅读(213)  评论(0编辑  收藏  举报