经典问题
文章平均质量分 86
Starzkg
你已经是一个成熟的程序猿了,要学会自己DEBUG了。
展开
-
斐波那契数列(Fibonacci Sequence)
基本概念斐波那契数列(Fibonacci Sequence):斐波那契数列(Fibonacci Sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, ...原创 2019-10-12 23:01:17 · 5651 阅读 · 1 评论 -
最小公倍数(Least_Common_Multiple)
一、定义几个数共有的倍数叫做这几个数的公倍数,其中除0以外最小的一个公倍数,叫做这几个数的最小公倍数。自然数a、b的最小公倍数可以记作[a、b],自然数a、b的最大公最小公倍数因数可以记作(a、b),当(a、b)=1时,[a、b]= a×b。如果两个数是倍数关系,则它们的最小公倍数就是较大的数,相邻的两个自然数的最小公倍数是它们的乘积。最小公倍数=两数的乘积/最大公约(因)数, 解题时...原创 2019-01-18 23:47:19 · 3792 阅读 · 0 评论 -
因子(Number_Of_Factors)
一、定义因子:假如整数n除以m,结果是无余数的整数,那么我们称m就是n的因子。质因子:在数论里,某一正整数的质因子指能整除该数的质数整数。完数:一个数的因子之和等于它本身,则该数为完数。二、性质1、因子性质无2、质因子性质两个没有共同质因子的正整数称为互质。数字1与任何正整数(包括1 本身)都是互质。This is because it has no pri...原创 2019-01-21 21:34:15 · 2628 阅读 · 0 评论 -
数位DP
一、定义给定的范围[l,r]中,满足(不满足)某个条件的数字,有多少个。二、思路从高位开始想低位,按位遍历,递归向下,求第i位的时候,需要第i-1位的所有可能性的和。三、例题http://acm.hdu.edu.cn/showproblem.php?pid=3555http://acm.hdu.edu.cn/showproblem.php?pid=2089(题解:https...原创 2019-01-28 17:23:52 · 236 阅读 · 0 评论 -
拓扑排序(Topology_Sort)
基本思想对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。...原创 2019-02-25 16:24:10 · 752 阅读 · 0 评论 -
强连通分量(Strongly_Connected_Components)
一、基本概念强连通图(Strongly Connected Graph)是指在有向图G中,如果对于每一对vi、vj,vi≠vj,从vi到vj和从vj到vi都存在路径,则称G是强连通图。有向图中的极大强连通子图称做有向图的强连通分量。连通分量:对于图G来的一个子图中,任意两个点都可以彼此到达,这个子图就被称为图G的连通分量(一个点就是最小的连通分量)最大连通分量:对于图G的一个子图,...原创 2019-03-14 18:20:47 · 2120 阅读 · 0 评论 -
最近公共祖先(Lowest_Common_Ancestors)
一、基本概念在一棵没有环的树上,每个节点肯定有其父亲节点和祖先节点,而最近公共祖先,就是两个节点在这棵树上深度最大的公共的祖先节点。换句话说,就是两个点在这棵树上距离最近的公共祖先节点。所以LCA主要是用来处理当两个点仅有唯一一条确定的最短路径时的路径。二、算法(1)Tarjan/DFS详细解释(2)ST/倍增三、例题http://acm.hdu.e...原创 2019-03-25 16:00:06 · 399 阅读 · 0 评论 -
NIM游戏
一、基本概念通常的Nim游戏的定义是这样的:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。二、条件首先定义ICG,只有满足这种定义的博弈论模型才能转换成nim游戏。满足以下条件的游戏是ICG(可能不大严谨): 有两名选手 两名选手交替对游戏...原创 2019-03-18 23:31:28 · 282 阅读 · 0 评论 -
RMQ问题
一、基本定义RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。二、算法(1)朴素复杂度:O(n)-O(qn)(2)线段树复杂度:O(n)-O(qlogn)参考文章:https://bl...原创 2019-03-27 14:22:09 · 1229 阅读 · 0 评论 -
矩阵构造方法
一、矩阵乘法https://blog.csdn.net/weixin_43272781/article/details/82899737二、矩阵构造方法Fibonacci数列:F(0)=1 , F(1)=1 , F(n)=F(n-1)+F(n-2)我们以前快速求Fibonacci数列第n项的方法是 构造常系数矩阵(一) Fibonacci数列f[n]=f[n-1]+f[n...转载 2019-03-28 20:58:45 · 806 阅读 · 0 评论 -
欧几里得算法和扩展欧几里得算法(Euclidean_Algorithm and Extended_Euclidean_Algorithm)
一、基本概念欧几里得算法:又名辗转相除法,计算两个整数a,b的最大公约数。扩展欧几里得算法:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。二、基本性质gcd函数的基本性质:gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|)贝祖定理:即如果a、b是整数...原创 2019-04-25 20:53:48 · 1545 阅读 · 0 评论 -
九九乘法表
#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;stdlib.h&amp;amp;gt;int main(int argc, char *argv[]) { int n;//输入数 int i,j;//循环变量 //多组数据输入 while (scanf(&amp;quot;%d&amp;quot;,原创 2018-09-25 21:00:32 · 1007 阅读 · 0 评论 -
回文字符串(Palindromic_String)
一、基本概念回文字符串:是一个正读和反读都一样的字符串。二、问题与算法(1)判断思想:1、初始化标志flag=true;2、输入字符串str,并获取其长度len;3、定义并初始化游标i=0,j=len-1,分别指向字符串开头和末尾;4、比较字符str[i]和str[j],若i==j,转至7,否则往下执行5;5、若str[i]和str[j]相等...原创 2019-04-30 17:07:49 · 63654 阅读 · 0 评论 -
网络流24题
HDU版本 问题编号 问题名称 问题模型 转化模型 题解 1 飞行员配对方案问题 二分图最大匹配 网络最大流 题解 2 太空飞行计划问题 最大权闭合图 ...原创 2019-05-22 00:35:07 · 391 阅读 · 0 评论 -
最长公共回文子串(Longest_Common_Palindrome_Substring)
一、基本概念最长公共回文子串(Longest_Common_Palindrome_Substring):两个字符串中最长的公共子串并且是回文字符串的子串二、算法三、代码#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;...原创 2019-06-01 17:27:54 · 768 阅读 · 0 评论 -
[POI2002][HAOI2007]反素数
https://www.lydsy.com/JudgeOnline/problem.php?id=1053https://www.luogu.org/problemnew/show/P1463定义:对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数。题解:#in...原创 2019-06-04 19:15:53 · 283 阅读 · 1 评论 -
八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种计算机语言可以解决此问题。原创 2019-07-06 20:48:04 · 373 阅读 · 0 评论 -
HDU 1427 速算24点
http://acm.hdu.edu.cn/showproblem.php?pid=1427C++版本一题解:DFS运算符可以重复,所以一共有4!*4^4种情况,并不算特别多(点数增多就是指数级的了)每次取2个数做尝试运算(+,-,*,/),得到1个结果数,再放回原来的集合,那么集合就从4个元素降至3个,减少了一个,直到集合元素中只有一个数字,如果这个数字是24,那么就可以计算;如...原创 2019-07-25 16:35:14 · 375 阅读 · 0 评论 -
最大公约数(Greatest_Common_Divisor)
一、定义如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。二、性质重要性质:gcd(a,b)=gcd(b,a) (交换律)gcd(-a,b)=gcd(a,b)gcd(a,a)=|a|gcd(a,0)=|a|gcd(a,1)=1gcd(a,b...原创 2019-01-18 23:40:03 · 4165 阅读 · 0 评论 -
斯特林数(Siteling_Number)
一、基本概念斯特林数出现在许多组合枚举问题中. 第一类斯特林数 StirlingS1[n,m], 给出恰包含 m 个圈的 n 个元素 的排列数目. 斯特林数满足母函数关系 . 注意某些 的定义与 Mathematica 中的不同,差别在于因子 .第二类斯特林数 StirlingS2[n,m]给出把 n 个可区分小球分配到m个不可区分的的盒子,且盒子没有空盒子的方法的数量. 它们满足关系...原创 2019-01-17 17:43:20 · 1479 阅读 · 0 评论 -
背包问题-C++
第一讲 01背包题目给定物品个数n,背包容量v,每个物品都有一个体积c和价值w,要求向背包中装物品使得总价值最高.基本思路状态表示:f(i,j)表示前i个物品试图装入一个容量为j的背包的最大价值. 边界情况:f(0,j)=0. 状态转移:f(i,j)=max(f(i-1,j),f(i,j-save[i])+value[i]). 即装或不装第i个物品 时间复杂度O(VN) ...原创 2018-10-20 16:41:14 · 2368 阅读 · 0 评论 -
斐波那契数列的前n项值
Description输入n,求斐波那契数列前n项的值。斐波那契数列规律如下:1, 1, 2, 3, 5, 8, 13,21, 34,55…,从第三项开始,每一项都是前面两项的和。Input输入正整数n。Output输出斐波那契数列的前n项值Sample Input1358Sample Output11 1 21 1 2 3 51 1 2 3 5 8 13 21 ...原创 2018-09-26 20:03:32 · 9583 阅读 · 1 评论 -
N皇后问题
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。 你的任务是,对于给定的N,求出有多少种合法的放置方法。 Input共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。Output共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。Sample I...原创 2018-10-10 22:33:07 · 774 阅读 · 1 评论 -
最长上升子序列(Longest increasing subsequence)
问题描述 对于一串数A={a1a2a3…an},它的子序列为S={s1s2s3…sn},满足{s1<s2<s3<…<sm}。求A的最长子序列的长度。动态规划法算法描述: 设数串的长度为n,L[i]为以第i个数为末尾的最长上升子序列的长度,a[i]为数串的第i个数。 L[i]的计算方法为:从前i-1个数中找出满足a...原创 2018-10-21 12:24:25 · 509 阅读 · 0 评论 -
Atlantis
There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some of these texts even include maps of parts of the island. But unfortunately, these maps describe diff...原创 2018-10-29 23:49:16 · 338 阅读 · 0 评论 -
畅通工程
某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? Input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M;随后的M行对应M条道路,每行给出...原创 2018-10-31 16:34:14 · 333 阅读 · 0 评论 -
Japan
Japan plans to welcome the ACM ICPC World Finals and a lot of roads must be built for the venue. Japan is tall island with N cities on the East coast and M cities on the West coast (M <= 1000, N &l...原创 2018-11-02 18:10:00 · 273 阅读 · 0 评论 -
组合数(Combinatorial_Number)
定义:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。公式:在线性写法中被写作C(m,n)。c(m,n)=p(m,n)/n!=m!/((m-n)!*n!)性质:1.互补性质组合数性质如右图所示:即从m个不同元素中取出n个元素...原创 2018-12-28 05:24:14 · 3192 阅读 · 0 评论 -
质数(Prime_Number)
一、定义质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。二、相关定理在一个大于1的数a和它2倍之间(即区间(a, 2a]中)必存在至少一个素数。 存在任意长度的素数等差数列。(格林和陶哲轩,2004年) 一个偶数可以写成两个数字之和,其中每一个数字都最多...原创 2018-12-18 13:26:21 · 4246 阅读 · 0 评论 -
约瑟夫问题
https://www.luogu.org/problemnew/show/P1996/**@Author: STZG*@Language: C++*/#include <bits/stdc++.h>#include<iostream>#include<algorithm>#include<cstdlib>#include&...原创 2018-12-25 13:45:07 · 334 阅读 · 0 评论 -
多边形面积(Area_Of_Polygons)
原理:任意多边形的面积可由任意一点与多边形上依次两点连线构成的三角形矢量面积求和得出。分析: 由于给出的点是相对于我们的坐标原点的坐标,每个点实际上我们可以当作一个顶点相对于原点的向量,如下图所示: P(0,0)对应的顶点向量分别为:A(x0,y0),B(x1,y1),…,G(x6,y6) 另外,△PAB△PAB的矢量面积即为且多边形面积为:根据上述公式可以直接求出...原创 2019-01-04 21:16:08 · 1152 阅读 · 0 评论 -
高精度计算(High-Precision_Calculation)
在说高精度加减乘除运算之前,我们先搞明白什么是高精度运算? 实际上高精度就是说参与运算的数据和运算结果的范围,超出标准数据类型能表示的数据大小范围的运算。这个时候,如果要得到正确的计算结果,显然不能依靠普通方法实现了。而要在普通运算原理的基础上,加以辅助算法来实现超大数据的计算。例如:求两个100位的数据的和,或者计算两个100位的数字乘积。这时就要用到高精度算法了。一、高精度...原创 2018-12-31 17:05:29 · 1251 阅读 · 0 评论 -
圆周率π的精确计算
一、圆周率π计算 /**@Author: STZG*@Language: C++*/#include <bits/stdc++.h>using namespace std;long a=10000,b,c=56000,d,e,f[56001],g;int main(){ for(;b-c ; )f[b++]=a/5; for(;d=0,g=c*2...转载 2019-01-01 12:20:31 · 6080 阅读 · 4 评论 -
欧拉函数(Euler_Function)
一、基本概述在数论,对正整数n,欧拉函数varphi(n)是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。二、计算公式三、基本性质欧拉函数用希腊字母φ表示,φ(N)表示N的欧拉函数.对φ(N)的值,我们可以通俗地理解为小于N且与N互质的数的个数(包含1).欧拉函数的一些性...原创 2019-01-01 20:35:02 · 7934 阅读 · 1 评论 -
矩阵快速幂(Matrix_Fast_Power)
一、基础知识(1)矩阵乘法https://blog.csdn.net/weixin_43272781/article/details/82899737简单的说矩阵就是二维数组,数存在里面,矩阵乘法的规则:A*B=C其中c[i][j]为A的第i行与B的第j列对应乘积的和,即:代码:const int N=100;int c[N][N];void multi(int ...原创 2019-01-07 00:01:36 · 865 阅读 · 0 评论 -
SG函数和SG定理(Sprague_Grundy)
一、必胜点和必败点的概念 P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败。 N点:必胜点,处于此情况下,双方操作均正确的情况下必胜。必胜点和必败点的性质: 1、所有终结点是 必败点 P 。(我们以此为基本前提进行推理,换句话说,我们以此为假设) 2、从任何必胜点N 操作,至少有一种方式可以进入必败点 P...原创 2019-01-07 00:02:15 · 4413 阅读 · 30 评论 -
巴什博奕(Bash_Game)
一、定义只有一堆n个物品,两个人轮流从这堆物品中取物, 规定每次至少取一个,最多取m个。最后取光者得胜。二、分析我们从最简单的情景开始分析当石子有1−m1−m个时,毫无疑问,先手必胜当石子有m+1m+1个时,先手无论拿几个,后手都可以拿干净,先手必败当石子有m+2−2mm+2−2m时,先手可以拿走几个,剩下m+1m+1个,先手必胜我们不难发现,面临m+1m+1个石子的人...原创 2019-01-07 00:02:20 · 894 阅读 · 2 评论 -
背包问题
前言本篇文章是我(dd_engi)正在进行中的一个雄心勃勃的写作计划的一部分,这个计划的内容是写作一份较为完善的NOIP难度的动态规划总结,名为《解动态规划题的基本思考方式》。现在你看到的是这个写作计划最先发布的一部分。背包问题是一个经典的动态规划模型。它既简单形象容易理解,又在某种程度上能够揭示动态规划的本质,故不少教材都把它作为动态规划部分的第一道例题,我也将它放在我的写作计划的...原创 2018-10-20 15:59:22 · 743 阅读 · 1 评论