AtCoder Beginner Contest 226 题解
Round decimals
题意:
给定浮点数 \(x\) ,输出 \(x\) 四舍五入后的结果
思路:
分析得到 \(x\) 四舍五入后等价于 \(x+0.5\) 取整,自证不难
Counting Arrays
题意:
给你 \(n\) 个长度为 \(l_i\) 的序列 \(a_i\) ,判断有多少对 \((i,j)\) 满足序列 \(a_i\) 与 \(a_j\) 不同,定义两个序列不同当且仅当存在一位不同。
思路:
容易想到对每个序列求哈希值,记得多换几个模数或者多求几个哈希值,否则你就会

Martial artist
题意:
你需要学 \(n\) 种招式,第 \(i\) 种招式花费 \(t_i\) 分钟,在学习第 \(i\) 个招式前必须学习 \(k_i\) 个编号小于 \(i\) 的招式 \(a_{i,j}\) ,问你最少需要多久可以学会第 \(n\) 个招式
思路:
发现学习第 \(n\) 个招式需要先学会 \(a_{n,j}\) ,其中 \(1\leq j\leq k_i\) ,那么问题转化为如何学会 \(a_{n,j}\) ,其中 \(1\leq j\leq k_i\) ,对需要学会的招式打标记,统计答案时判断是否需要学会即可
代码:link
Teleportation
题意:
在平面直角坐标系内给你 \(n\) 个点 \(P_i\) ,其中 \(1\leq i \leq n\) ,定义一种操作 \((a,b)\) 是把 \(P(x,y)\) 变成 \(P(x+a,y+b)\) ,你可以定义无数种形如 \((a,b)\) 的操作,两种操作被认为是相同的当且仅当 \(a=a'\) 且 \(b=b'\) ,你希望对点 \(1\leq i\leq n\) 进行无数次某一种操作,使其一定能变成另外 \(n-1\) 个点中的每一个,问至少定义多少种操作
思路:
容易发现把 \(P(a,b)\) 变成 \(P(x,y)\) 需要进行一次形如 \((x-a,y-b)\) 的操作,进而得到答案至多为 \(n\times (n-1)\) ,也就是对两两点对定义操作,很容易发现存在更优的方案,比如走 \(((x-a)\times k^{-1},(y-b)\times k^{-1})\) 当然前提是能整除,到这里方法已经很明显了,就是找一个最大的 \(k\) 使得 \(k~|~(x-a)\) 且 \(k~|~(y-b)\) ,\(k\) 显然就是 \(\gcd(x-a,y-b)\) ,这样可以在 \(\mathcal{O}(n^2)\) 的时间复杂度下求出所以的最优化的操作 \((a,b)\) ,去重即可,如果您闲的没事想哈希一下别瞎哈希,否则就会
