【牛客寒假算法基础集训营2 处女座的砝码 (思维)】教程文章相关的互联网学习教程文章

612.1.004 ALGS4 | Elementary Sorts - 基础排序算法【图】

sublime编辑器写代码,命令行编译 减少对ide的依赖//可以提示缺少什么依赖import 所有示例代码动手敲一遍 Grahams Scan是经典的计算几何算法 shffule 与 map-reduce 有关—— 云计算 知道这些算法在身边切实的应用,对学习动力很有帮助 下一章开始,使用 git进行源代码管理! 先用来做自己的项目管理Inspiration 计算机思维——不要重复造轮子 零件的通用性——拆分拆分再拆分,专业与分工细致 1.Callback = reference to executabl...

FCC JS基础算法题(13):Caesars Cipher(凯撒密码)【代码】

题目描述:下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码。移位密码也就是密码中的字母会按照指定的数量来做移位。一个常见的案例就是ROT13密码,字母会移位13个位置。由A ? N, B ? O,以此类推。写一个ROT13函数,实现输入加密字符串,输出解密字符串。所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们。基本思路不难,难点在如何跳过特殊符号,比如空格逗号...

FCC JS基础算法题(9):Mutations(比较字符串)【代码】

题目描述:如果数组第一个字符串元素包含了第二个字符串元素的所有字符,函数返回true。举例,["hello", "Hello"]应该返回true,因为在忽略大小写的情况下,第二个字符串的所有字符都可以在第一个字符串找到。["hello", "hey"]应该返回false,因为字符串"hello"并不包含字符"y"。["Alien", "line"]应该返回true,因为"line"中所有字符都可以在"Alien"找到。题目提示使用indexOf方法:function mutation(arr) {// 请把你的代码写在这...

FCC JS基础算法题(10):Chunky Monkey(分割数组)【代码】

题目描述:把一个数组arr按照指定的数组大小size分割成若干个数组块。例如:chunk([1,2,3,4],2)=[[1,2],[3,4]];chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]];没什么好说的,自己做出的方法与网络上的差别不大,以下是代码:function chunk(arr, size) {// 请把你的代码写在这里var newarr = [];for (var i = 0; i < arr.length; i+=size){newarr.push(arr.slice(i, i+size));}return newarr; }chunk(["a", "b", "c", "d"], 2);

程序猿必知的10大基础有用性算法

转载自:http://www.apkbus.com/portal.php?mod=view&aid=9839 算法一:高速排序算法  高速排序是由东尼霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比較。在最坏状况下则须要Ο(n2) 次比較。但这样的状况并不常见。其实,高速排序通常明显比其它Ο(n log n) 算法更快。由于它的内部循环(inner loop)能够在大部分的架构上很有效率地被实现出来。  高速排序使用分治法(Divide and conquer)策略...

基础算法【代码】【图】

1. 一个列表list,里面只有一个数出现了一次,其他数都出现了两次。在时间复杂度O(n),空间复杂度O(1)下输出出现一次的数: def selectnum(list):a = 0for i in list:a = a ^ ireturn a #^为异或运算。数a异或运算数b两次,结果仍为数a。 #^运算可以将两个相同的数清零。只出现一次的数字 2. 一个列表list,里面只有一个数出现了一次,其他数都出现了三次。在时间复杂度O(n),空间复杂度O(1)下输出出现一次的数: #位运算解决 clas...

数据结构与算法数学基础【图】

指数 (1) (2) (3) (4) (5) 对数 (1)当且仅当 (2) (3)logAB = logA + logB,A>0且B>0 级数 (1) (2),若0<A<1,则有≤ 1 / (1 - A) (3) (4), (5)调和数 模运算 如果N整除A、N整除B,那么就说A与B模N同余,记为A≡B(mod N)。直观地看,这意味着无论是A还是B被N去除,所得余数都是相同的,于是假如有A≡B(mod N),则: (1)A + C ≡ B + C(mod N) (2)AD ≡ BD (mod N)

牛客寒假算法基础集训营5 炫酷数字 (暴力)【代码】

炫酷数字 链接:https://ac.nowcoder.com/acm/contest/331/G 题目描述小希希望你构造一个最小的正整数,使得其有n个因子。 输入描述: 第一行一个整数T表示数据组数每组数据第一行输入一个正整数n,表示其因子数。n≤1,000,000T≤1,000,000 输出描述: 输出一行一个整数,表示你构造出的这个数。注意:你需要保证你构造的数≤1,000,000,如果在这个范围里面无法构造出一个正整数满足条件,请输出-1。示例1输入2 4 5输出6 16这个题 用...

牛客寒假算法基础集训营2 处女座的砝码 (思维)【代码】

处女座的砝码 链接:https://ac.nowcoder.com/acm/contest/327/C 题目描述处女座热爱做物理实验,为了实验,处女座必须要精确的知道物品的质量。处女座准备自己设计一套砝码,每一个砝码都是正整数,这套砝码必须能够精确测量出n以内所有正整数的质量,处女座想要知道至少需要多少个砝码。你可以在天平的任意一边放置砝码。输入描述: 一行,一个正整数n 1<=n<=10^1000 输出描述: 一个整数,表示最少的砝码数。示例1输入20 输出4 ...

Algorithm 算法基础知识(未完成

基础概念不讲,记录课上关键部分 时间复杂度(Time Complexity) 算法所需要花的时间比较时间复杂度(主要看问题的规模)时间频度(算法执行次数)T(n)和T(n1),如果两个时间频度为等价无穷小,那么为时间复杂度相等用O表时间复杂度上界,用Ω表示时间复杂度下界用θ表示如果复杂度上下界相等(一般求的是O) 时间复杂度举例基本语句:简单复杂度为O(1),100个简单语句也为O(1)循环语句:1个循环的时间复杂度为O(n),n次循环空...

牛客寒假算法基础集训营1 D 小a与黄金街道【代码】【图】

链接:https://ac.nowcoder.com/acm/contest/317/D来源:牛客网 题解思路: 首先若gcd(n, x) = 1,那么gcd(n, n ? x)一定等于1同时不难发现,若小a在某个位置获得了kx的贡献, 那么一定存在一个位置会获得kn-x的贡献,而且两个人的贡献是相同的! 把小a的贡献单独写出来即为 考虑如何快速得到R的值,观察题目描述不难发现,能产生答案的数一定是与n互质的数,这与?函数的定义是相同的! 又因为前n个数的欧拉函数之和为?(n)*n/2 也...

牛客寒假算法基础集训营6【图】

A出题思路:列方程,设6分题出了x道,求x的范围。 B煤气灶思路:等差数列求和,一元二次方程,因为数据大,爆long long:需要将乘法转换为除法。求a >= b/c 可以用二分,将枚举O(n)的算法转换成O(logn) C项链思路:贪心,优先选择喜爱度大的颜色。先对颜色按照喜爱度排序,从1到m枚举i,每次答案加上b[i]*min(a[i],leave), D美食思路:贪心,i从1到n枚举,依次贪心。对于a[i],首先把答案加上a[i]/2,如果a[i]是奇数且a[i+1]>0,则...

牛客寒假算法基础集训营4 E Applese 涂颜色【代码】【图】

链接:https://ac.nowcoder.com/acm/contest/330/E来源:牛客网 题目描述 精通程序设计的 Applese 叕写了一个游戏。 在这个游戏中,有一个 n 行 m 列的方阵。现在它要为这个方阵涂上黑白两种颜色。规定左右相邻两格的颜色不能相同。请你帮它统计一下有多少种涂色的方法。由于答案很大,你需要将答案对 109+7109+7 取模。 输入描述: 仅一行两个正整数 n, m,表示方阵的大小。 输出描述: 输出一个正整数,表示方案数对 109+7109+7 取...

牛客寒假算法基础集训营6 E 海啸【代码】

题目链接点这里 这个题输入类型是第一次见,并没有把n和m的具体范围给你,但是给了n*m的范围,武断的设为1e6*1e6的二维数组铁铁WA,就将二维数组转换为一维数组 题目类型属于二维数组前缀和,有um[i][j]=sum[i?1][j]+sum[i][j?1]?sum[i?1][j?1]+a[i][j] 求矩阵(a,b)到(x,y)的矩阵的和可以用sum[x][y]?sum[x][b?1]?sum[a?1][y]+sum[a?1][b?1] 在前期处理的时候,将水位超过d的设为1,否则设为0 代码如下:#include <bits/stdc++.h> ...

牛客寒假算法基础训练营6 J 迷宫 (双端队列+BFS)【代码】【图】

这一题在左右移动距离上给出了限制,总结下来,就是在上下移动不限,左右移动有界的情况下求出能走到的最多的格子。 我是用了BFS+双端队列的方法过了这题,标准题解没太理解。 接下来直接贴代码,具体说明在代码上会标注1 /*========================================*/2 #include<iostream>3 #include<algorithm>4 #include<string>5 #include<cstring>6 #include<map>7 #include<set>8 #include<stack>9 #include<queue>10 #incl...