A League of Legends
LYF 签到
C Cube
题意:给定八个三维点,问是不是立方体
解:算一下每个点到所有点的距离的平方,一定是3个a^2,3个2a^2,1个3a^2。感性理解显然如果每个点到别的点的距离都符合着个规律,它一定是立方体。
F Fair Distribution
题意:给定1000组1e8以内的n,m。可以减少n或增加m,n和m每更改1的花费为1。问使得n可以整除m的最小花费
LYF解:
首先显然可以在时限内枚举根号m以内n’的值求这部分的答案。
然后考虑当n在根号m以外时,k一定在根号m以内。如果枚举k可以得到n’和m’,那么就做完了。但是k一定时n’和m’并不固定。那么从贪心的角度考虑,改动n时,kn会变化k;而改动m时,m只会变化1。因此可以优先变化n再变化m,得到答案。
G Wall Game
题意:有蜂窝状的格子。每次操作将一个点染黑,或询问当前格子所在的连通块的边界长度(六边形每条边算1)。
LYF解:
并查集看六个方向的六边形是否在同一个连通块内,如果在的话就对连通块的边数-1,不在的话+1。因为数据范围比较大,需要map维护。同时貌似卡了哈希。
I Grammy and Ropes
LYF?
J Grammy and Jewelry
LYF 基础DP
L String Freshman
合作。读题容易读错的字符串题。问kmp的nxt数组是否有不为0的位
M Game Theory
签到。输出0
补B Restore Atlantis
可持久化树套树虽然好像能写,但是肯定常数大得飞起
线段树套平衡树套了个set 常数太大T了
题意:给定n100000个边和坐标轴平行的矩形,保证矩形的顶点都在0到maxc=2000。有q100000个询问,每个询问给定l,r,问若把编号l到r的这些矩形删掉,剩下矩形的面积并。
解:首先可以发现点只有2000乘2000,加起来是4e6,突破口肯定在这里。
直接利用主席树之类的数据结构并没有办法处理l到r删掉的情况,顶多只能处理l到r保留的情况。因此考虑从这里思考特殊性质。
可以发现,如果覆盖某个点的矩形的最大编号为M,最小编号为m,那么只要M>r或者m<l,该点就需要被统计到答案中。因此可以考虑先算出每个点的M和m。
类似的题目经常是用扫描线+数据结构进行计算的,这道题也不例外。扫描线惯例先把矩形拆成两部分:压入和弹出。按顺序枚举x轴,开一棵线段树,每次将线段树的区间压入当前矩形的编号(由于我们只需要max和min,所以可以对线段树每个节点开两个priority_queue,同时为了存储删除的数据,再开两个priority_queue),每次时间复杂度$O(\lg^2C)$。在右边界为该x值的矩形都处理完后,dfs该线段树得到该列上每个点的M和m值$O(C)$。因此这一步的总复杂度为$O(n\lg^2C+C^2)$。
得到每个点的答案后,下一步是统计询问的答案。可以发现,$\sum _ {M>r或m<l} Point=\sum Point - \sum _ {M\le r且m\ge l} Point$。而后者可以较为简单地利用扫描线+树状数组解答(差不多是模板题了)。将询问排序后,扫描线枚举的右边界的编号,每次修改树状数组并询问。