ACM_51NOD
ITAK
这个作者很懒,什么都没留下…
展开
-
Python3 列表自定义排序
很多时候我们需要对一个list列表进行排序,然而我们想按照自己的排序方式进行排序,那么就需要自定义一个排序函数,然后按照这个排序函数进行排序。 由于Python3 取消了对 cmp 的支持,那么我们就不能用以前的cmp函数,然后按照cmp函数进行排序了,Python2中的自定义布尔函数cmp=custom_cmp(x, y)由Python3中的key=custom_key(x)代替。 p原创 2017-12-14 20:17:55 · 10100 阅读 · 0 评论 -
51NOD 1537 分解(矩阵快速幂)——算法马拉松17(告别奥运)
传送门问 (1+2√)n(1+\sqrt 2) ^n 能否分解成 m−−√+(√m−1)\sqrt m +\sqrt(m-1)的形式 如果可以 输出 m MOD (109+7)m\ MOD\ (10^9+7) 否则 输出 nonoInput一行,一个数 nn。 (n<=1018)(n<=10^{18})Output一行,如果不存在 mm 输出 nono,否则输出 m MOD 109+7 m\ M原创 2016-08-29 09:59:52 · 1191 阅读 · 0 评论 -
51NOD 1120 机器人走方格 V3(卢卡斯定理 + 非降路径)
传送门N * N的方格,从左上到右下画一条线。一个机器人从左上走到右下,只能向右或向下走。并要求只能在这条线的上面或下面走,不能穿越这条线,有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10007的结果。 Input 输入一个数N(2 <= N <= 10^9)。 Output 输出走法的数量 Mod 10007。 Input示例 4 Output示例 10 解题思路原创 2016-08-05 17:59:12 · 1420 阅读 · 0 评论 -
51NOD 1016 水仙花数 V2(打表)
传送门 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153,1634 = 1^4 + 6^4 + 3^4 + 4^4)。 给出一个整数M,求 >= M的最小的水仙花数。 Input 一个整数M(10 <= M <= 10^60) Output 输出>= M的最小的水仙花数,如果没有符合条件的水仙花数原创 2016-08-04 19:36:18 · 1450 阅读 · 0 评论 -
51NOD 1632 B君的连通(推公式)——算法马拉松16
传送门 B国拥有n个城市,其交通系统呈树状结构,即任意两个城市存在且仅存在一条交通线将其连接。A国是B国的敌国企图秘密发射导弹打击B国的交通线,现假设每条交通线都有50%的概率被炸毁,B国希望知道在被炸毁之后,剩下联通块的个数的期望是多少?Input 一个数n(2<=n<=100000) 接下来n-1行,每行两个数x,y表示一条交通线。(1<=x,y<=n) 数据保证其交通系统构成一棵树。原创 2016-08-01 10:27:24 · 1668 阅读 · 0 评论 -
51NOD 1185 威佐夫游戏 V2(博弈论 + 减少精度)
传送门 有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。 例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都有对应的方法拿到最后1颗。 Input 第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <=原创 2016-07-31 19:34:00 · 1933 阅读 · 4 评论 -
51NOD 1265 四点共面(计算几何)
传送门 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面)。如果共面,输出”Yes”,否则输出”No”。 Input 第1行:一个数T,表示输入的测试数量(1 <= T <= 1000) 第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <= x, y, z <= 1000)。 Ou原创 2016-07-31 18:56:45 · 1287 阅读 · 0 评论 -
51NOD 1276 岛屿的数量(脑洞 + 思维)
传送门 有N个岛连在一起形成了一个大的岛屿,如果海平面上升超过某些岛的高度时,则这个岛会被淹没。原本的大岛屿则会分为多个小岛屿,如果海平面一直上升,则所有岛都会被淹没在水下。 给出N个岛的高度。然后有Q个查询,每个查询给出一个海平面的高度H,问当海平面高度达到H时,海上共有多少个岛屿。例如: 岛屿的高度为:{2, 1, 3, 2, 3}, 查询为:{0, 1, 3, 2}。 当海面高度为0时原创 2016-07-09 18:36:22 · 2096 阅读 · 0 评论 -
51NOD 1267 4个数和为0(二分 + 排序)
传送门 给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出”Yes”,否则输出”No”。 Input 第1行,1个数N,N为数组的长度(4 <= N <= 1000) 第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9) Output 如果可以选出4个数,使得他们的和为0,则输出”Yes”,否则输出”No”。 Input示例 5 -1原创 2016-07-07 20:27:55 · 3173 阅读 · 2 评论 -
51NOD 1246 罐子和硬币(脑洞大开)
传送门有n个罐子,有k个硬币,每个罐子可以容纳任意数量的硬币。罐子是不透明的,你可以把这k个硬币任意分配到罐子里。然后罐子被打乱顺序,你从外表无法区别罐子。最后罐子被编上号1-n。每次你可以询问某个罐子,如果该罐子里有硬币,则你可以得到1个(但你不知道该罐子中还有多少硬币),如果该罐子是空的,你得不到任何硬币,但会消耗1次询问的机会。你最终要得到至少c枚硬币(c <= k),问题是给定n,k,c,由原创 2016-07-07 18:47:41 · 2205 阅读 · 2 评论 -
51NOD 1127 最短的包含字符串
传送门给出一个字符串,求该字符串的一个子串S,S包含A-Z中的全部字母,并且S是所有符合条件的子串中最短的,输出S的长度。如果给出的字符串中并不包括A-Z中的全部字母,则输出No Solution。 Input 第1行,1个字符串。字符串的长度 <= 100000。 Output 输出包含A-Z的最短子串长度。如果没有符合条件的子串,则输出No Solution。 Input示例 BVC原创 2016-07-06 20:40:29 · 1114 阅读 · 0 评论 -
51NOD 1100 斜率最大
传送门平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。 (点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。数据中所有点的X轴坐标均不相等) Input 第1行,一个数N,N为点的数量。(2 <= N <= 10000) 第2 - N + 1行:具体N个点的坐标,X Y均为整数(-10^9 <= X,Y <原创 2016-07-06 20:37:51 · 1971 阅读 · 0 评论 -
51NOD 1110 距离之和最小 V3(中位数 + 技巧)
传送门 X轴上有N个点,每个点除了包括一个位置数据X[i],还包括一个权值W[i]。该点到其他点的带权距离 = 实际距离 * 权值。求X轴上一点使它到这N个点的带权距离之和最小,输出这个最小的带权距离之和。 Input 第1行:点的数量N。(2 <= N <= 10000) 第2 - N + 1行:每行2个数,中间用空格分隔,分别是点的位置及权值。(-10^5 <= X[i] <= 10^5原创 2016-07-16 21:19:37 · 2175 阅读 · 0 评论 -
伯努利数应用
组合数学、 伯努利数、 自然数幂和原创 2016-08-07 18:13:40 · 3026 阅读 · 4 评论 -
51NOD 1661 黑板上的游戏(博弈 找规律)——算法马拉松17(告别奥运)
传送门1661 黑板上的游戏Alice和Bob在黑板上玩一个游戏,黑板上写了n个正整数a1, a2, …, an,游戏的规则是这样的:1 . Alice占有先手主动权。2 . 每个人可以选取一个大于1的数字擦去,并写上一个更小的数字,数字必须是整数,然后由对方进行下一次操作。3 . 如果擦去的数字是 x (x > 1) ,则写上的数字不能比 x/k 小,但是要比 x 小。这里的除法为有理数除法。4原创 2016-08-29 12:58:31 · 1364 阅读 · 0 评论 -
51NOD 1491 黄金系统 && Codeforces 458 A. Golden System(斐波那契数列 + 找规律)
传送门 q = 5√+12q \ =\ \frac{\sqrt5+1} 2在黄金系统下面a0a1...ana_0a_1...a_n等于 ∑ni=0ai∗qn−i\sum_{i=0}^n a_i∗q^{n−i },其中ai a_i 是 00 或者 11。现在给出两个黄金系统下面的数字,请比较他们的大小。Input单组测试数据。第一行有一个字符串 aa 。第二行有一个字符串 bb 。他们都是非空串,可原创 2016-08-21 11:50:46 · 1328 阅读 · 0 评论 -
51NOD 1678 lyk与gcd(容斥+素数筛)
传送门 这天,lyk又和gcd杠上了。 它拥有一个n个数的数列,它想实现两种操作。1:将 aia_i 改为 bb。 2:给定一个数i,求所有 gcd(i,j)=1gcd(i,j)=1 时的 aja_j 的总和。Input 第一行两个数n,Q(1<=n,Q<=100000)。 接下来一行n个数表示ai(1<=ai<=10^4)。 接下来Q行,每行先读入一个数A(1<=A<=2)。原创 2017-06-11 21:13:48 · 832 阅读 · 0 评论 -
51NOD 1806 wangyurzee的树(容斥原理 + 组合数学)
传送门 wangyurzee有n个各不相同的节点,编号从1到n。wangyurzee想在它们之间连n-1条边,从而使它们成为一棵树。 可是wangyurzee发现方案数太多了,于是他又给出了m个限制条件,其中第i个限制条件限制了编号为u[i]的节点的度数不能为d[i]。 一个节点的度数,就是指和该节点相关联的边的条数。 这样一来,方案数就减少了,问题也就变得容易了,现在请你告诉wangyur原创 2017-06-29 17:46:05 · 892 阅读 · 7 评论 -
51NOD 1341 混合序列(构造矩阵)
传送门 题目描述: Input共1行,4个整数数p, q, r, n中间用空格分隔(1 <= p, q, r, n<=1000000000)。Output对于每一个数据,在一行中输出答案。Input示例2 2 1 1Output示例3解题思路:令 f(n)=∑ni=0ai∗bn−if(n)=\sum_{i=0}^na_i*b_{n-i},将其展开有: f(n)=a0∗bn+a1∗bn−1+..原创 2017-06-07 10:55:06 · 779 阅读 · 0 评论 -
51NOD 1432 独木舟(贪心+递归)
传送门 nn 个人,已知每个人体重。独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人。显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟?Input 第一行包含两个正整数 n(0<n≤10000)和m(0<m≤2000000000)n (0\lt n\le 10000)和m (0\lt m\le 2000000000),表示人数和独木舟的承重。原创 2017-04-23 18:51:39 · 724 阅读 · 0 评论 -
51NOD 1140 矩阵相乘结果的判断(随机化算法+矩阵结合率)
传送门 给出三个N*N的矩阵A, B, C,问A * B是否等于C? Input 第1行,1个数N。(0 <= N <= 500) 第2 - N + 1行:每行N个数,对应矩阵A的元素。(0 <= M[i] <= 16) 第N + 2 - 2N + 1行:每行N个数,对应矩阵B的元素。(0 <= M[i] <= 16) 第2N + 2 - 3N + 1行:每行N个数,对应矩阵C的元素。原创 2017-04-22 19:35:28 · 1673 阅读 · 0 评论 -
51NOD 1836 战忽局的手段(矩阵乘法加速+__float128精度问题+概率期望)——算法马拉松20(告别美国大选及卡斯特罗)
传送门题目描述:众所周知,有一个神秘的组织——战忽局,在暗中保护着我们。在局中任职的官员都有着极强的忽悠技巧,不只能用预言,还能用往事忽悠人。如今某外星间谍已经获得了战忽局曾经参与的n次事件的资料,局座发现了这件事,于是决定再次用忽悠来保证战忽局的安全。局座将发表m次演讲,每一天他都会从n事件中等概率地挑选一件混淆众人,由于局座每天很忙,不能把之前将的事件都记录下来,因此他可能会重复选择某一件事。现原创 2016-12-03 19:09:38 · 2319 阅读 · 0 评论 -
51NOD 1519 拆方块(思维)
传送门有n堆方块,第i堆方块由hi个方块堆积而成。具体可以看样例。 接下来拆方块。一个方块称为内部方块当且仅当他的上下左右都是方块或者是地面。否则方块就是边界方块。每一次操作都要把边界方块拿掉。 问多少次操作之后所有方块会消失。 样例解释: 每一次操作,边界方块被标记为红色。 经过第一次操作,只剩下四个方块。第二次操作之后,只剩下一个方块。Input 单组测试数据。 第一行有一个原创 2016-10-13 10:42:20 · 1135 阅读 · 0 评论 -
51NOD 1421 最大MOD值&&Codeforces 484 B. Maximum Value(筛法 + 二分)
传送门B. Maximum Valuetime limit per test1 secondmemory limit per test256 megabytesYou are given a sequence a consisting of n integers. Find the maximum possible value of(integer remainder of ai divided b原创 2016-08-13 20:47:07 · 855 阅读 · 0 评论 -
51NOD 1509 加长棒 && Codeforces 571 A. Lengthening Sticks(组合数学 + 挡板法)
[传送门](http://codeforces.com/contest/571/problem/A)A. Lengthening Stickstime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given three sticks wi原创 2016-09-16 17:05:11 · 1470 阅读 · 0 评论 -
51NOD 1161 Partial Sums(数论)
传送门 给出一个数组A,经过一次处理,生成一个数组S,数组S中的每个值相当于数组A的累加,比如:A = {1 3 5 6} => S = {1 4 9 15}。如果对生成的数组S再进行一次累加操作,{1 4 9 15} => {1 5 14 29},现在给出数组A,问进行K次操作后的结果。(每次累加后的结果 mod 10^9 + 7) Input 第1行,2个数N和K,中间用空格分隔,N表示数原创 2016-08-11 11:19:24 · 1309 阅读 · 9 评论 -
51 NOD 1188 最大公约数之和 V2(基础数论)
数学 推导公式 欧拉筛法原创 2016-08-10 17:24:37 · 1620 阅读 · 3 评论 -
默慈金数
传送门 有一个1*n的矩阵 固定第一个数为1 其他填正整数 且相邻数的差不能超过1 求方案数%1e9+7的结果 Input 一个数n 表示1*n的矩阵(n<=10^6) Output 一个数 表示方案数%1e9+7的结果 Input示例 3 Output示例 5解题思路: 这是一个默慈金数的题目,那么什么叫默慈金数呢。 默慈金数是在数学中,一个给定的数n的默慈金数是“在一原创 2016-07-29 19:31:13 · 1601 阅读 · 0 评论 -
51NOD 1108 距离之和最小 V2(中位数 + 化整为分)
传送门 三维空间上有N个点, 求一个点使它到这N个点的曼哈顿距离之和最小,输出这个最小的距离之和。 点(x1,y1,z1)到(x2,y2,z2)的曼哈顿距离就是|x1-x2| + |y1-y2| + |z1-z2|。即3维坐标差的绝对值之和。 Input 第1行:点的数量N。(2 <= N <= 10000) 第2 - N + 1行:每行3个整数,中间用空格分隔,表示点的位置。(-10^9原创 2016-07-16 19:56:20 · 1817 阅读 · 0 评论 -
51NOD 1098 最小方差(基础数学)
传送门 若x1,x2,x3……xn的平均数为k。 则方差s^2 = 1/n * [(x1-k)^2+(x2-k)^2+…….+(xn-k)^2] 。 方差即偏离平方的均值,称为标准差或均方差,方差描述波动程度。 给出M个数,从中找出N个数,使这N个数方差最小。 Input 第1行:2个数M,N,(M > N, M <= 10000) 第2 - M + 1行:M个数的具体值(0 <= X原创 2016-07-05 19:59:16 · 3661 阅读 · 0 评论 -
51NOD 1105 第K大的数(二分好题)
传送门 数组A和数组B,里面都有n个整数。数组C共有n^2个整数,分别是A[0] * B[0],A[0] * B[1] ……A[1] * B[0],A[1] * B[1]……A[n - 1] * B[n - 1](数组A同数组B的组合)。求数组C中第K大的数。 例如:A:1 2 3,B:2 3 4。A与B组合成的C包括2 3 4 4 6 8 6 9 12共9个数。 Input 第1行:2个数原创 2016-07-15 21:36:14 · 3486 阅读 · 4 评论 -
51NOD 1070 Bash游戏 V4(斐波那契博弈)
传送门 有一堆石子共有N个。A B两个人轮流拿,A先拿。每次拿的数量最少1个,最多不超过对手上一次拿的数量的2倍(A第1次拿时要求不能全拿走)。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N,问最后谁能赢得比赛。 例如N = 3。A只能拿1颗或2颗,所以B可以拿到最后1颗石子。 Input 第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T原创 2016-07-09 19:38:50 · 1746 阅读 · 0 评论 -
51NOD 算法马拉松15(脱欧专场) B君的游戏(博弈)
传送门B君的游戏 wwwwodddd (命题人) 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 B君和L君要玩一个游戏。刚开始有n个正整数 ai 。双方轮流操作。每次操作,选一个正整数x,将其移除,再添加7个数字 x1,x2…x7 。要求对于 xi ,满足 0<= xi < x 且 x&xi=xi 注意0不能被选取,所以这个游戏一定会结束,而谁无法操作谁就原创 2016-06-28 10:34:13 · 1941 阅读 · 0 评论 -
判断一个比较大的数是不是素数的方式(最简单的)
我今天在51NOD上做了一个题,就是问你一个大的数是不是素数,范围是(2-10^30),然后我一看这么大,立刻想到用java,但是让我更没想到的是JAVA的功能这么强大,直接有判断是不是素数的方法,isProbablePrime(args),在这里面让args这个参数是1,然后直接判断就行了,我又学了一招呀。。。 代码:import java.math.*;import java.util.Sc原创 2016-05-19 20:50:37 · 6714 阅读 · 0 评论 -
51NOD 1434 区间LCM(素数筛)
传送门1434 区间LCM 题目来源: TopCoder 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 一个整数序列S的LCM(最小公倍数)是指最小的正整数X使得它是序列S中所有元素的倍数,那么LCM(S)=X。 例如,LCM(2)=2,LCM(4,6)=12,LCM(1,2,3,4,5)=60。 现在给定一个整数N(1<=N<=1000原创 2016-05-31 11:42:06 · 4269 阅读 · 0 评论 -
51NOD 1262 扔球(欧拉函数)
传送门 1262 扔球 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 在圆上一点S,扔出一个球,这个球经过若干次反弹还有可能回到S点。N = 4时,有4种扔法,如图:恰好经过4次反弹回到起点S(从S到T1,以及反向,共4种)。 给出一个数N,求有多少种不同的扔法,使得球恰好经过N次反弹,回到原点,并且在第N次反弹之前,球从未经过S点。 I原创 2016-05-31 10:45:28 · 879 阅读 · 0 评论 -
51NOD 1116 K进制下的大数(字符串取模 + 枚举)
传送门 1116 K进制下的大数 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 有一个字符串S,记录了一个大数,但不知这个大数是多少进制的,只知道这个数在K进制下是K - 1的倍数。现在由你来求出这个最小的进制K。 例如:给出的数是A1A,有A则最少也是11进制,然后发现A1A在22进制下等于4872,4872 mod 21 = 0,并且2原创 2016-05-30 14:32:20 · 3365 阅读 · 0 评论 -
51NOD 1040 最大公约数之和(分析 + 欧拉函数)
传送门 1040 最大公约数之和 题目来源: rihkddd 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 给出一个n,求1-n这n个数,同n的最大公约数的和。比如:n = 6 1,2,3,4,5,6 同6的最大公约数分别为1,2,3,2,1,6,加在一起 = 15 Input 1个数N(N <= 10^9) Output 公约数之和 Inp原创 2016-05-30 10:53:47 · 1722 阅读 · 0 评论 -
51NOD 1010 只包含因子2 3 5的数(二分 + 预处理)
传送门K的因子中只包含2 3 5。满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15。 所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数。 例如:n = 13,S中 >= 13的最小的数是15,所以输出15。 Input 第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000) 第2 - T + 1行:每行1个数N原创 2016-05-29 20:13:08 · 4993 阅读 · 12 评论 -
HDU 5701 中位数计数( 2016"百度之星" - 初赛(Astar Round2B) 思维 + 暴力)
传送门 中位数计数Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 852 Accepted Submission(s): 335Problem Description 中位数定义为所有值从小到大排序后排在正中间的那个数,如果值原创 2016-05-27 20:04:56 · 3498 阅读 · 0 评论