牛客

圆圈中最后剩下的数------约瑟夫环问题

让人想犯罪 __ 提交于 2019-11-28 09:56:22
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!^_^)。请你试着想下,哪个小朋友会得到这份礼品呢?(注:小朋友的编号是从0到n-1) 问题核心: 我们看待这个问题,首先,第一轮时被淘汰的那个数字,肯定不会是最后剩下的那个数字。 因此,最后剩下的数字一定在n-1个数中。 而在这n-1个数中,这一轮淘汰的数字也不可能是最后剩下的数字,因此最后剩下的数字一定在n-2个数中。 从上我们就可以看出规律,n个数,每m个数淘汰一个数的约瑟夫环的问题,实际上就是递归求解(n-1,m)所剩下的那个数,也就是求解(n-2,m)剩下的那个数...... 实际上这就是一个递归的过程。 而真正的关键点在于,我们求解得到的这个数,一定要是n个数时的索引,这是什么意思呢? 比如,n=10,m=4: 0 1 2 3 4 5 6 7 8 9 现在我们淘汰了(4-1)%10=3

暑假训练idea汇总

爱⌒轻易说出口 提交于 2019-11-27 21:13:55
AFO时间过长导致看什么都觉得新鲜……暑假训练主要就是打一打hdu和nowcoder的多校,题目没什么好保密的。因为没有部分分可能并不适合学弟学妹们练习,不过有些idea还是很有意思的,当作课余消遣大约不错。思维能力很强的oier想必头脑中都有很多妙趣横生的模型吧?没有用公式题解果然不美观qwq 7.22 CF1189 A1 Add on a Tree 简要题意:给定一棵树,每次选两个叶子,给它们之间的路径上的边加任意实数权。现在假设这棵树每个边都有一个随机边权,问按上述规则是否存在构造方案。要求线性复杂度。 简 要题解: 度为 2 的点所连的两边必须相同,所以判度数即可。对于其他情况均可在子树中调整,充分性同样可证。 CF1189 A2 Add on a Tree:Revolution 简要题意:把前一题中的实数权改为正整数,规定每条边的边权,给出一个构造方案。要求线性复杂度。 简要题解: 按照 dfs 序构造,关键在于怎样消除上面操作对已经完成部分的影响。将一个叶子节点设为根,其他叶子节点直接向根连要求权值的边。对于非叶子节点,选取子树中两个叶子之间连(出权-入权)/2,再由两个叶子分别向根连边,即可满足当前要求并且不破坏之前构造。过程中出现了小数或上一题中矛盾即为无解,算法题往往把一个整体问题“分步处理”,尽可能消除后效性才可以得到满意的复杂度。 7.25 2019牛客多校3

贪心--牛客wannafly挑战赛7F

旧巷老猫 提交于 2019-11-26 23:10:30
贪心--牛客wannafly挑战赛7F 链接: https://ac.nowcoder.com/acm/contest/56/F 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 有一天Masha回到家,发现有n只老鼠在它公寓的走廊上,她大声呼叫,所以老鼠们都跑进了走廊的洞中。 这个走廊可以用一个数轴来表示,上面有n只老鼠和m个老鼠洞。第i只老鼠有一个坐标𝑥𝑖,第𝑗个洞有一个坐标𝑝𝑗和容量𝑐𝑗。容量表示最多能容纳的老鼠数量。 找到让老鼠们全部都进洞的方式,使得所有老鼠运动距离总和最小。老鼠i进入洞j的运动距离为|𝑥𝑖 − 𝑝𝑗| 无解输出-1。 输入描述: 第一行包含两个整数n,m,表示老鼠和洞的数量。 第二行包含n个整数𝑥1...𝑛,表示老鼠坐标。 接下来m行每行两个整数𝑝, 𝑐,表示每个洞的坐标和容量。 输出描述: 输出最小运动距离总和或-1。 示例1 输入 复制 4 5 6 2 8 9 3 6 2 1 3 6 4 7 4 7 输出 复制 11 示例2 输入 复制 7 2 10 20 30 40 50 45 35 -1000000000 10 1000000000 1 输出 复制 7000000130 备注: 𝑛, 𝑚 ≤ 106, 1 ≤ 𝑐 ≤ 𝑛, 1