自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

只想默默的博客

我很懒,也愚昧

  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 51Nod-1240-莫比乌斯函数

51Nod-1240-莫比乌斯函数 1240 莫比乌斯函数 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出。梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号。(据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数)。具体定义如下:如果一个数包含平方因子,那么miu(n) = 0。例如:miu(4), miu...

2018-05-05 16:58:44 365

原创 51Nod-1185-威佐夫游戏 V2

51Nod-1185-威佐夫游戏 V2 1185 威佐夫游戏 V2有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都有对应的方法拿到

2017-09-07 00:15:25 398

原创 51Nod-1183-编辑距离

51Nod-1183-编辑距离 1183 编辑距离编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如将kitten一字转成sitting:sitten (k->s)sittin (e->i)sitti

2017-09-05 23:25:19 461

原创 51Nod-1181-质数中的质数(质数筛法)

51Nod-1181-质数中的质数(质数筛法) 1181 质数中的质数(质数筛法)如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。Input输入一个数N(N <= 10^6)Output输出>=N的最

2017-09-04 20:41:11 440

原创 51Nod-1174-区间中最大的数

51Nod-1174-区间中最大的数 1174 区间中最大的数给出一个有N个数的序列,编号0 - N - 1。进行Q次查询,查询编号i至j的所有数中,最大的数是多少。例如: 1 7 6 3 1。i = 1, j = 3,对应的数为7 6 3,最大的数为7。(该问题也被称为RMQ问题)Input第1行:1个数N,表示序列的长度。(2 <= N <= 10000)第2

2017-09-04 19:29:19 316

原创 51Nod-1137-矩阵乘法

51Nod-1137-矩阵乘法 1137 矩阵乘法给出2个N * N的矩阵M1和M2,输出2个矩阵相乘后的结果。Input第1行:1个数N,表示矩阵的大小(2 <= N <= 100)第2 - N + 1行,每行N个数,对应M1的1行(0 <= M1[i] <= 1000)第N + 2 - 2N + 1行,每行N个数,对应M2的1行(0 <= M2[i] <= 1

2017-09-03 15:37:23 326

原创 菜鸟的第七篇日志

十年磨一剑,一朝试锋芒! 省赛今日闭幕,我与我的队友们终于以AC两到题的成绩夺下了铜牌奖。虽然队伍成绩仍然是本校几支队伍最差的,但是我仍然很兴奋!经过这么久的努力,我终于取得了一个令我满意的成绩。 回忆暑期,在集训队个人训练时,一直被各位大佬虐,加入队伍后,又是一直被各个大佬队虐,集训就是在虐与奋斗中度过,呵呵,当然,外加集训期间的摸鱼。 即使这次省赛仍然是被本校各个队伍虐,但是,真的很感谢我

2017-09-02 22:51:45 184

原创 菜鸟的第六篇日志

八月三十一,八月的最后一天,也是暑期集训队结束的一天。 从七月九号开始,至八月三十一止,为期四十三天。 我从小白也成功晋级为菜鸟,一只正一步步走向大神的菜鸟。 还记得当初刚来集训的时候,什么算法都不会,写题全靠的是基本的数学逻辑思维。后来我学会了以怎样的姿势去自学,一步步让自己慢慢向前进。 从初来的垫底存在,一路拼搏,终于以微弱的成绩挤入了省赛的参加名单。一个名次或许对那些大佬而言是轻而易举

2017-09-01 00:29:44 304

原创 51Nod-1136-欧拉函数

51Nod-1136-欧拉函数 1136 欧拉函数对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。例如:φ(8) = 4(Phi(8) = 4),因为1,3,5,7均和8互质。Input输入一个数N。(2 <= N <= 10^9)Output

2017-08-30 19:41:50 272

原创 51Nod-1135-原根

51Nod-1135-原根 1135 原根设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)

2017-08-30 13:34:25 231

原创 51Nod-1134-最长递增子序列

51Nod-1134-最长递增子序列 1134 最长递增子序列给出长度为N的数组,找出这个数组的最长递增子序列。(递增子序列是指,子序列的元素是递增的)例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10。Input第1行:1个数N,N为序列的长度(2 <= N <= 50000)第2 - N + 1行:每行1个数,对应序列的

2017-08-29 21:47:27 266

原创 51Nod-1118-机器人走方格

51Nod-1118-机器人走方格 1118 机器人走方格M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。Input第1行,2个数M,N,中间用空格隔开。(2 <= m,n <= 1000)Output输出走法的数量。Input示例2 3Output示例3解题

2017-08-29 16:39:59 484

原创 51Nod-1106-质数检测

51Nod-1106-质数检测 1106 质数检测给出N个正整数,检测每个数是否为质数。如果是,输出"Yes",否则输出"No"。Input第1行:一个数N,表示正整数的数量。(1 <= N <= 1000)第2 - N + 1行:每行1个数(2 <= S[i] <= 10^9)Output输出共N行,每行为 Yes 或 No。Input示例52345

2017-08-29 15:52:41 347

原创 51Nod-1088-最长回文子串

51Nod-1088-最长回文子串1088 最长回文子串回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。输入一个字符串Str,输出Str里最长回文子串的长度。Input输入Str(Str的长度 <= 1000)Output输出最长回文子串的长度L。Input示例daabaacOutput示例5解题方法 该题解题方法有两种,一种是直接暴力,一种是运用Manac

2017-08-28 22:15:46 402

原创 51Nod-1085-背包问题

51Nod-1085-背包问题 1085 背包问题在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2……Pn(Pi为整数)。求背包能够容纳的最大价值。Input第1行,2个整数,N和W中间用空格隔开。N为物品的数量,W为背包的容量。(1 <= N <= 100,1 <= W <= 10

2017-08-27 13:20:02 216

原创 51Nod-1081-子段求和

51Nod-1081-子段求和 1081 子段求和给出一个长度为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 <= 50000)。第2 至 N + 1行:

2017-08-27 12:56:25 314

原创 51Nod-1079-中国剩余定理

51Nod-1079-中国剩余定理 1079 中国剩余定理一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K。例如,K % 2 = 1, K % 3 = 2, K % 5 = 3。符合条件的最小的K = 23。Input第1行:1个数N表示后面输入的质数及模的数量。(2 <= N <= 10)第2 - N + 1行,每行2个数P和M,中间用空格分隔

2017-08-26 19:31:59 289

原创 51Nod-1073-约瑟夫环

51Nod-1073-约瑟夫环 1073 约瑟夫环N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。例如:N = 3,K = 2。2号先出列,然后是1号,最后剩下的是3号。Input2个数N和K,表示N个人,数到K出列。(2 <= N, K <= 10^6)Output最后剩下的人的编号I

2017-08-25 18:48:57 268

原创 51Nod-1072-威佐夫游戏

51Nod-1072-威佐夫游戏 1072 威佐夫游戏有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都有对应的方法拿到最后1颗。Input第1

2017-08-24 21:49:43 244

原创 51Nod-1069-Nim游戏

51Nod-1069-Nim游戏 1069 Nim游戏有N堆石子。A B两个人轮流拿,A先拿。每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N及每堆石子的数量,问最后谁能赢得比赛。例如:3堆石子,每堆1颗。A拿1颗,B拿1颗,此时还剩1堆,所以A可以拿到最后1颗石子。Input第

2017-08-24 20:56:50 224

原创 51Nod-1066-Bash游戏

51Nod-1066-Bash游戏 1066 Bash游戏有一堆石子共有N个。A B两个人轮流拿,A先拿。每次最少拿1颗,最多拿K颗,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N和K,问最后谁能赢得比赛。例如N = 3,K = 2。无论A如何拿,B都可以拿到最后1颗石子。Input第1行:一个数T,表示后面用作输入测试的数的数量

2017-08-23 10:22:44 200

原创 51Nod-1058-N的阶乘的长度

51Nod-1058-N的阶乘的长度 1058 N的阶乘的长度输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。Input输入N(1 <= N <= 10^6)Output输出N的阶乘的长度Input示例6Output示例3解题思路 对于求阶乘位数问题,这是一个数学问题,要涉及到一个实用的数学公式——斯特林公式。 利用斯特林公式

2017-08-22 22:46:57 255

原创 51Nod-1057-N的阶乘

51Nod-1057 N的阶乘 1057 N的阶乘输入N求N的阶乘的准确值。Input输入N(1 <= N <= 10000)Output输出N的阶乘Input示例5Output示例120就python而言,直接暴力计算就行,不必担心变量的数据范围。 代码如下:while True: try: n, ans = int(input(

2017-08-22 10:11:26 270

原创 51Nod-1049-最大子段和

51Nod-1049 最大子段和 1049 最大子段和N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。Input第1行:整数序列的长度N(2 <= N <= 50000)

2017-08-22 08:58:57 214

原创 几种典型的搜索题型(一)

搜索题型很多,尤其在与图结合的题型上。而身为菜鸟的我,仅仅只能挑出一些常见的简单题型讲解一番。不懂什么专业的术语,下面题型是我自己命名,请不要见怪哦。第一种题型 合并周边同类问题合并周边同类问题基础版——Oil Deposits 该题题意是,有一块空地,‘@’代表油田,’*’不是油田。然后若是两个油田横竖斜三个方向中有一个方向是相连接的那么把这两个油田看做一个油田。 输入:

2017-08-21 22:15:03 2101

原创 51Nod-1046-A^B Mod C

51Nod 1046 A^B Mod C 1046 A^B Mod C给出3个正整数A B C,求A^B Mod C。例如,3 5 8,3^5 Mod 8 = 3。Input3个正整数A B C,中间用空格分隔。(1 <= A,B,C <= 10^9)Output输出计算结果Input示例3 5 8Output示例3解题思路:这道题暴力一定会WA的,那么,

2017-08-21 21:18:32 336

原创 51Nod-1027-大数乘法

51Nod-1027 大数乘法 1027 大数乘法给出2个大整数A,B,计算A*B的结果。Input第1行:大数A第2行:大数B(A,B的长度 <= 1000,A,B >= 0)Output输出A * BInput示例123456234567Output示例28958703552对于python来说,这种大数算法不存在麻烦,直接两个数相乘即可。 py

2017-08-21 20:48:20 477

原创 菜鸟的第五篇日志

最近长期熬夜,最早也是一点睡觉,平常都是两三点睡觉。这并不是在努力学习,而是拼命看番看电视剧。每天学习到近十二点后,便开始点开网页,然后就控住不住自己了。这导致最近精神一直低糜,刷题学习都不在状态。 这一个星期我终于开始慢慢啃到手已久的“紫书”——《算法竞赛入门经典》。原本以为这本书会一直雪藏下去,但是,经过一个月的集训后,发现自己算法慢慢提升上来,现在终于有基础能看懂紫书了。 今天聚餐的时候,

2017-08-20 22:40:29 149

原创 51Nod-1019-逆序数

1019 逆序数在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。给出一个整数序列,求该序列的逆序数。Input第1行:N,N为序列的长度(n <= 50000)第2 - N + 1行:序列中的元素(0 <= A[i] <= 10^9)

2017-08-20 16:01:14 299

原创 51Nod-1018-排序

1018 排序给出N个整数,对着N个整数进行排序Input第1行:整数的数量N(1 <= N <= 50000)第2 - N + 1行:待排序的整数(-10^9 <= A[i] <= 10^9)Output共n行,按照递增序输出排序好的数据。Input示例554321Output示例12345题目意思十分明了,这是一个排序问题。对于排序有很多方法,当然能偷懒可以尽量偷

2017-08-19 10:43:32 231

原创 51Nod-1012-最小公倍数LCM

1012 最小公倍数LCM输入2个正整数A,B,求A与B的最小公倍数。Input2个数A,B,中间用空格隔开。(1<= A,B <= 10^9)Output输出A与B的最小公倍数。Input示例30 105Output示例210一道纯数学题目,先求出最大共约数,再求最小公倍数。 代码如下:def gcd(a, b): if b == 0: return a

2017-08-19 10:30:52 241

原创 51Nod-1011-最大公约数GCD

1011 最大公约数GCD输入2个正整数A,B,求A与B的最大公约数。Input2个数A,B,中间用空格隔开。(1<= A,B <= 10^9)Output输出A与B的最大公约数。Input示例30 105Output示例15一道基础题,测试的是数学功底。 这道题用辗转相除法解答,可以用递归函数简单明了地表达出辗转相除这一数学方法。代码如下:def gcd(a, b): if

2017-08-18 10:49:47 283

原创 51Nod-1008-N的阶乘 mod P

1008 N的阶乘 mod P输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)例如:n = 10, P = 11,10! = 36288003628800 % 11 = 10Input两个数N,P,中间用空格隔开。(N < 10000, P < 10^9)Output输出N! mod P的结果。Input示例10 11Output示例10一道基础题目,累计

2017-08-18 10:43:03 186

原创 51Nod-1006-最长公共子序列Lcs

1006 最长公共子序列Lcs给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。比如两个串为:abcicbaabdkscabab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。Input第1行:字符串A第2行:字符串B(A,B的长度 <= 1000)Output输出最长的子序列,如果有多个,随意输出1个。Input示例abc

2017-08-17 11:36:15 313 3

原创 51Nod-1005-大数加法

python里的长整型范围没有限制,仅仅受限与机器内存而已,故而这一题的大数加法对python而言是简单的一道题目,仅仅几行代码就就能搞定。 此题若是用C或C++写,因为受整型范围限制,大数应当先用字符串存储,然后经过一系列地转换,再用字符串来输出结果,代码较为复杂。 解题代码如下:while True: try: A = int(input()) B =

2017-08-15 11:07:00 267

原创 51Nod-1000-A+B

解题代码如下:while True: try: #把输入的数用map转化为一个存整数类型的列表 caption = list(map(int, input().split())) ans = 0 for i in caption: ans += i print(ans) excep

2017-08-15 10:45:30 245

原创 Python3的ACM输入输出格式

接触python不到两个月,但发现自己已经深深迷恋上了这门语言。因为正在学acm缘故,想尝试一下用python写出那些acm题,但是发现,在网上找题解的时候,找的一大片是用C与C++写的。没办法,谁让python运行没有C他们快,比赛几乎没人用python。求人不如求己,自己干脆就用python3敲出一系列的acm题。第一种多组输入模板格式:while True: try:

2017-08-15 10:22:33 14131 2

原创 菜鸟的第四篇日志

此时的时间已经是八月中旬。写完第三篇到现在,已经过去近半个月了。期间仅仅写下两篇博客。八月期间,自己越来越懒。 自从一场重要的比赛过后,队里开始分组,为即将到来的大赛做准备。我很幸运,以微弱的成绩拿到了参赛的资格,然后分到了实力最差的小组。这并不影响我,反正我也是垫底的存在。 到了八月后,队里的训练突然改变。已经不再开专题训练,现在几乎是两天一早训加下午组队训练。两种训练仍是垫底存在,现在仍只能

2017-08-14 10:33:02 195

原创 几种排序算法的讲解(二)

四、希尔排序希尔排序其实是直接插入排序算法的一种变形,实质是分组插入排序。又称缩小增量排序。 该方法首先要理解分组操作,其实是以间隔分组,即每间隔几个数后就分做一组,然后进行插入排序。接着把间隔缩短一半,以此下去,直到间隔没有,才停下操作。如:有10个数据,开始的时候每间隔10/2 = 5 划为一组,即第1个数与第6个数为一组,第2个数与第7个数为一组。。。。。。以此类推,然后对每一组的数进行插入

2017-08-09 22:42:03 242

原创 几种排序算法的讲解(一)

看完一本基础的算法书后,很多知识仍然混乱,打算用博客的形式来慢慢整理自己所学所感的知识。写得可能不好,但是我会尽力地把这些知识用自己的话慢慢讲解,讲通。因为,教才是最好的学。首先说一下经常能碰到的一些排序算法,有冒泡排序、直接插入排序、快速排序、希尔排序和堆排序等等。基础入门级的排序应该就是是冒泡和直接插入两大排序了,然后难一点的是快速与希尔、进一步是用到图论知识的堆排序,还有其他的排序算法,如黑

2017-08-02 23:49:07 294

大学算法设计与分析ppt

ppt摘取了算法导论的内容与大学课本算法设计与分析,没有具体的代码,但有分析思路。

2018-06-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除