ACM算法规整
文章平均质量分 68
BBHHTT
~~~~~~~~~~~~~~~~~~
展开
-
判断和输出素数——普通方法(C语言)
素数:除了1和它本身不再有其它的因数的大于1的自然数。素数判断函数: int Prime_judge(int x) {int i;if(x==0||x==1) return 0;for(i=2;iif(x%i==0) return 0;//不是素数 else if(x%i!=0&&(i==sqrt(x))) ret原创 2017-07-19 18:56:13 · 1757 阅读 · 0 评论 -
51nod 1242 斐波那契数列的第N项(矩阵幂运算)
1242 斐波那契数列的第N项基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注斐波那契数列的定义如下: F(0) = 0F(1) = 1F(n) = F(n - 1) + F(n - 2) (n >= 2) (1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233...原创 2017-10-04 12:50:00 · 306 阅读 · 0 评论 -
51nod 1240 莫比乌斯函数
1240 莫比乌斯函数基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出。梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号。(据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数)。具体定义如下:如果一个原创 2017-09-23 14:53:51 · 301 阅读 · 0 评论 -
欧拉图知识总结
欧拉图欧拉图通路(回路):通过图中所有边一次且仅一次,并且过每一顶点的通路(回路)无向图判断G有欧拉通路:G连通,且G中奇数度的点只有0或2个。G有欧拉回路:G连通,且G中都是偶数度点(奇数度点为零)。有向图判断D有欧拉通路:D连通,除两个顶点外(只有两个),其余顶点的入度等于出度。这两个顶点一个出度比入度大1,一定是起点;另一个入度比出度大1,一定是终点(只能大1,且总共两个这样的点)。D有欧拉...原创 2017-11-28 17:48:27 · 1884 阅读 · 0 评论 -
RMQ算法(ST表)
RMQRMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。 当然还有别的方法可以选择,例如线段树(此算法比线段树更快)。RMQ算法是一种比较高效的在线算法(ST算法)。所谓在线算法,是指用户每输入一个查询便马上处理...原创 2017-08-09 19:38:03 · 364 阅读 · 0 评论 -
51nod 1135 原根(数论)
1135 原根 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根。(其中φ(m)表示m的欧拉函数)给出1个质数P,找出P最小的原根。Input输入1个质数P(3 <= P <= 10^9)Output输出P最小的原根。Input示例3Output示例2求模素数P原根的方法:对...原创 2018-02-12 11:13:35 · 373 阅读 · 0 评论 -
51nod 1130 N的阶乘的长度 V2(斯特林近似)
1130 N的阶乘的长度 V2(斯特林近似) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。Input第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 1000)第2 - T + 1行:每行1个数N。(1 <= N <= 10^9)Outp...原创 2018-02-13 10:07:46 · 218 阅读 · 0 评论 -
51nod 1073 约瑟夫环(数论)
1073 约瑟夫环 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。例如:N = 3,K = 2。2号先出列,然后是1号,最后剩下的是3号。Input2个数N和K,表示N个人,数到K出列。(2 <= N, K <= 10^6...原创 2018-02-14 09:34:05 · 299 阅读 · 0 评论 -
51nod 1081 子段求和(树状数组)
1081 子段求和 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注给出一个长度为N的数组,进行Q次查询,查询从第i个元素开始长度为l的子段所有元素之和。例如,1 3 7 9 -1,查询第2个元素开始长度为3的子段和,1 {3 7 9} -1。3 + 7 + 9 = 19,输出19。Input第1行:一个数N,N为数组的长度(2 <= N <= ...原创 2018-02-15 10:25:09 · 224 阅读 · 0 评论 -
51nod 1058 N的阶乘的长度(斯特林近似)
1058 N的阶乘的长度 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。Input输入N(1 <= N <= 10^6)Output输出N的阶乘的长度Input示例6Output示例3#include<stdio.h>#include<math.h>...原创 2018-02-15 10:42:40 · 227 阅读 · 0 评论 -
欧几里德算法及扩展
欧几里德算法 又叫辗转相除法,用于计算两个整数a,b的最大公约数,计算公式 gcd(a,b)=gcd(b,a mod b)。其计算原理依赖于定理:两个整数的最大公约数等于其中较小的那个数的和两数相除余数的最大公约数,gcd(a,b)=gcd(b,a mod b)。定理证明前往百度百科。 示意图:实现代码:int gcd(int a,int b){ if(b==0) return ...原创 2018-04-02 17:28:58 · 440 阅读 · 0 评论 -
孙子定理(中国剩余定理)
中国剩余定理中国剩余定理这样描述,给出以下一元线性同余方程组 给出你n个ai和mi,求出符合题意的X值,一般输出最小解。ti 要用扩展欧几里得算法e_gcd()计算。证明参照:点击打开链接看个例子一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作《孙子算经》卷下第二十六题,叫做“物不知数”问题,原文如...原创 2018-04-02 20:27:40 · 2080 阅读 · 0 评论 -
nyoj 288 士兵杀敌(五)(前缀和)
士兵杀敌(五)时间限制:2000 ms | 内存限制:65535 KB难度:5描述南将军麾下有百万精兵,现已知共有M个士兵,编号为0~M,每次有任务的时候,总会有一批编号连在一起人请战(编号相近的人经常在一块,相互之间比较熟悉),最终他们获得的军功,也将会平分到每个人身上,这样,有时候,计算他们中的哪一个人到底有多少军功就是一个比较困难的事情。在这样的情况下,南将军却经常会在许多次战役之后询问...原创 2018-04-13 10:17:28 · 155 阅读 · 0 评论 -
poj 2299 Ultra-QuickSort(离散化+树状数组求逆序数)
Ultra-QuickSortTime Limit: 7000MS Memory Limit: 65536KTotal Submissions: 67585 Accepted: 25315DescriptionIn this problem, you have to analyze a particular sorting algorithm. The algorithm processes a ...原创 2018-04-24 18:56:56 · 203 阅读 · 0 评论 -
51nod 1089 最长回文子串 V2(Manacher算法)
1089 最长回文子串 V2(Manacher算法) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。输入一个字符串Str,输出Str里最长回文子串的长度。Input输入Str(Str的长度 <= 100000)Output输出最长回文子串的长度L。Inp...原创 2018-08-12 10:23:31 · 256 阅读 · 0 评论 -
最大子矩阵和(dp:任意子矩阵或指定行列)
最大子矩阵和例如:3*3的矩阵: -1 3 -1 2 -1 3 -3 1 2 和最大的子矩阵是: 3 -1 -1 3 1 2输入第1行:M和N,中间用空格隔开(2 <= M,N <= 500)。第2 - N + 1行:矩阵中的元素,每行M个数,中间用空格隔开。(-10^9 <= M[i] <= 10^9)输出输出和的最大值。如果所有数都是...原创 2018-08-20 09:18:19 · 1378 阅读 · 0 评论 -
51nod 1050 循环数组最大子段和(dp)
循环数组最大子段和分析:(1)笨方法,我们可以用普通最大子段和的方法解决这个问题。我们从每个位置“断开”环,然后按普通的最大子段和的方法去做。这样做的复杂度是O(n^2)。(2)巧妙点的方法,我们之所以要从某个位置切开是因为循环的最大子段和可能是跨越一部分头和尾。如上图,最优解可能是0..i, j + 1.. n – 1两段,那这时,其实中间i + 1..j是个“最小子段和”,因为总...原创 2018-08-20 09:58:10 · 328 阅读 · 0 评论 -
51nod 1298 圆与三角形
1298 圆与三角形题目来源: HackerRank基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交。相交输出"Yes",否则输出"No"。(三角形的面积大于0)。Input第1行:一个原创 2017-09-17 16:24:25 · 309 阅读 · 0 评论 -
nyoj143 第几是谁(康拓逆展开)
第几是谁?时间限制:3000 ms | 内存限制:65535 KB难度:3描述现在有"abcdefghijkl”12个字符,将其按字典序排列,如果给出任意一种排列,我们能说出这个排列在所有的排列中是第几小的。但是现在我们给出它是第几小,需要你求出它所代表的序列.输入第一行有一个整数n(0<n<=10000);随后有n行,每行是一个整数m,它代表着序列的第几小;输出输出一个序列,占一...原创 2017-09-09 19:03:02 · 303 阅读 · 1 评论 -
二分法求方程根--C语言
1088: 习题5-15 二分法求方程的根时间限制: 1 Sec 内存限制: 12 MB提交: 43 解决: 24[提交][状态][讨论版]题目描述用二分法求下面方程在区间(a,b)之间的根:2x3-4x2+3x-6=0区间端点a, b由键盘输入,确保输入区间内有根。计算至误差小于10-6为止。程序中,浮点型数据请定义为双精度double类型。提原创 2017-07-19 20:22:09 · 12934 阅读 · 3 评论 -
牛顿迭代法求方程根--C语言
1087: 习题5-14 牛顿迭代法求方程的根时间限制: 1 Sec 内存限制: 12 MB提交: 35 解决: 32[提交][状态][讨论版]题目描述用牛顿迭代法求下面方程在输入初值点附近的根:2x3-4x2+3x-6=0要求前后两次求出的x的差的绝对值小于10-6牛顿迭代法公式如下:将给定给定方程写成f(x)=0的形式,在给定初值x0的情况下,按原创 2017-07-19 20:10:15 · 9678 阅读 · 0 评论 -
树状数组学习总结(动态求取区间和、单点元素值)
树状数组树状数组是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值(如果加入多个辅助数组则可以实现区间修改与区间查询)。求和操作 (1)树状数组中的每个元素是原数组中一个或者多个连续元素的和。 (2)在进行连续求和操作a[1]+...+a[...原创 2017-08-09 15:51:41 · 421 阅读 · 0 评论 -
nyoj756 重建二叉树
重建二叉树时间限制:1000 ms | 内存限制:65535 KB难度:3描述题目很简单,给你一棵二叉树的后序和中序序列,求出它的前序序列(So easy!)。输入输入有多组数据(少于100组),以文件结尾结束。每组数据仅一行,包括两个字符串,中间用空格隔开,分别表示二叉树的后序和中序序列(字符串长度小于26,输入数据保证合法)。输出每组输出原创 2017-08-10 10:47:24 · 279 阅读 · 0 评论 -
最长公共子序列,最长公共子串,最长单调子序列等问题入门
首先来说子串和字符串的区别:子串!=子序列例如:一个字符串 awbcdewgh他的子串: awbc. awbcd awbcde ....很多个子串 但是都是连续在一起 他的子序列: abc . abcd abcde ... 很多个子序列 但是子序列中的字符在字符串中不一定是连在一起的, 但是 子序列一定是单调的, (即字符之间转载 2017-08-16 20:17:44 · 352 阅读 · 0 评论 -
nyoj128 前缀式计算 栈
前缀式计算时间限制:1000 ms | 内存限制:65535 KB难度:3描述先说明一下什么是中缀式:如2+(3+4)*5这种我们最常见的式子就是中缀式。而把中缀式按运算顺序加上括号就是:(2+((3+4)*5))然后把运算符写到括号前面就是+(2 *( +(3 4) 5) )把括号去掉就是:+ 2 * + 3 4 5原创 2017-08-10 20:20:21 · 312 阅读 · 0 评论 -
ACM常用C/C++函数
函数名: ceil用 法: double ceil(double x);功 能: 返回大于或者等于指定表达式的最小整数头文件:math.h说明:float ceil ( float value )返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 in原创 2017-07-27 20:13:39 · 2588 阅读 · 0 评论 -
蛇形填数(方块填数+三角形填数)
蛇形填数(一)蛇形矩阵问题一:描述 以下内容参考《算法竞赛入门经典(第2版)刘汝佳》在n*n方阵里填入1,2,„,n*n,要求填成蛇形。例如n=4时方阵为 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 上面的方阵转载 2017-07-27 11:26:36 · 1719 阅读 · 0 评论 -
最小生成树的两种算法图解(Kruskal与prim)
Problem Description省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。 Input测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随后的...转载 2017-08-14 20:24:38 · 3030 阅读 · 0 评论 -
快速幂运算(入门完整版)
快速幂运算除数学问题之外,也有许多地方用到了幂运算。在此给大家介绍一种能够非常高效的计算幂运算的快速幂运算算法——反复平方法。Carmichael Number我们把对任意的1限制条件:2输入 17 输出 No(17是素数)输入 561 输出 Yes在这里mod,也可用%代替:mod运算,即求余运算,是在整转载 2017-08-13 08:28:25 · 2089 阅读 · 0 评论 -
nyoj148 fibonacci数列(二)(矩阵幂运算)
fibonacci数列(二)时间限制:1000 ms | 内存限制:65535 KB难度:3描述In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2 for n ≥ 2. For example, the first ten terms of the Fibonacci se...原创 2017-09-13 19:03:06 · 385 阅读 · 0 评论 -
nyoj 144 小珂的烦恼
小珂的苦恼时间限制:1000 ms | 内存限制:1000 KB难度:2描述 小珂是一名初中生,她现在很苦恼,因为老师布置了一个让她苦恼的作业,你能不能帮助她呢?题目信息如下。 已知二元一次方程 a*x+b*y=n, 判断这个二元一次方程有没有整数解,x,y为未知数,其中a,b,n都为整数且不等于零,同时满足0输入第一行有一个整数0输出存原创 2017-09-23 09:47:49 · 506 阅读 · 0 评论 -
扩展欧几里德算法详解
转自:http://blog.csdn.net/zhjchengfeng5/article/details/7786595扩展欧几里德算法 谁是欧几里德?自己百度去 先介绍什么叫做欧几里德算法 有两个数 a b,现在,我们要求 a b 的最大公约数,怎么求?枚举他们的因子?不现实,当 a b 很大的时候,枚举显得那么的naïve ,那怎么做?转载 2017-09-23 09:55:43 · 350 阅读 · 0 评论 -
莫比乌斯反演公式(数论)
转自:http://blog.csdn.net/f_zyj/article/details/51852672莫比乌斯反演公式则 莫比乌斯函数µ 另一种更常用的形式: 在某一个范围内: 则 线性筛法求解/* * 莫比乌斯反演公式 * 线性筛法求解积性函数(莫比乌斯函数) */const int MAXN = 10000转载 2017-09-23 15:39:15 · 1041 阅读 · 0 评论 -
2006 飞行员配对(二分图最大匹配)
2006 飞行员配对(二分图最大匹配)题目来源: 网络流24题基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注第二次世界大战时期,英国皇家空军从沦陷国征募了大量外籍飞行员。由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2名飞行员,其中1名是英国飞行员,另1名是外籍原创 2017-08-31 20:56:17 · 266 阅读 · 0 评论 -
nyoj139 我排第几个(康拓展开)
我排第几个时间限制:1000 ms | 内存限制:65535 KB难度:3描述现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?输入第一行有一个整数n(0<n<=10000);随后有n行,每行是一个排列;输出输出一个整数m,占一行,m表示排列是第几位;样例输入3abcdefghijklhgebkf...原创 2017-09-09 18:56:35 · 325 阅读 · 0 评论 -
子序列的个数
子序列的个数给定一个正整数序列,序列中元素的个数和元素值大小都不超过105, 求其所有子序列的个数。注意相同的只算一次:例如 {1,2,1}有子序列{1} {2} {1,2} {2,1}和{1,2,1}。最后结果对10^9 + 7取余数。分析: 万能枚举,时间复杂度O(2^n)——因为每一项都可以选择取或者不取嘛。这个不可行,n太大了。我们想想动态规划?严格来讲这个题不是一个dp的问题,...原创 2018-08-20 17:46:25 · 5228 阅读 · 0 评论