自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 前缀和总结

考虑这样一个题目:给定一个长度为N的数组,有Q个询问,每次询问这个数组中一段连续区间的和。实例:[4,5,6,−2,3,10][4, 5, 6, -2, 3, 10][4,5,6,−2,3,10] 询问第2到第5个数字之和等于12。思考:如果按照题目描述进行模拟,那么每个询问都需要使用询问进行求和,速度太慢。我们可以使用前缀和进行加速。一维前缀和:我们假设输入的数组名为datadat...

2019-12-04 22:14:05 324

原创 noip2019普及组 公交换乘

题目公交换乘算法(滑动窗口,队列) O(45n)O(45n)O(45n)这道题目有个限制很重要:不会有两次乘车记录出现在同一分钟这就说明对于每个公交车来说,所能使用的优惠券不会超过45张。即我们可以完美避开各种复杂的数据结构优化了。因此我们可以从前往后扫描每条记录,同时用一个队列维护当前车次可以使用的优惠券区间:如果当前记录是火车,则加入维护的优惠券区间;如果当前记录是公...

2019-12-01 21:28:09 2232

原创 noip2019普及组 数字游戏

题目数字游戏算法(模拟,字符串处理) O(1)O(1)O(1)读入字符串,然后依次判断每个字符是否是 ‘1’ 即可。时间复杂度字符串长度固定为8,每个字符只会被遍历一次,所以时间复杂度是 O(1)O(1)O(1) 。C++ 代码#include <cstdio>#include <cstring>#include <iostream>#i...

2019-12-01 21:12:15 901

原创 noip2005普及组 循环

题目循环算法(高精度,数学,数论,递推) O(10k3)O(10k^3)O(10k3)引理1: 前 k+1k+1k+1 位的所有循环节长度,一定是 前 kkk 位循环节长度的子集。证明:如果前 kkk 位都不相同,那么前 k+1k+1k+1 位一定也不相同。引理2: 假设最小循环节长度是 ttt,那么所有循环节长度一定都是 ttt 的整数倍。证明:假设有循环节长度 ...

2019-11-21 10:18:26 615

原创 noip2005普及组 采药

题目采药算法(DP,背包问题) O(nm)O(nm)O(nm)经典01背包问题。采药总时间相当于背包容量,每一株药相当于一件物品,采药时间相当于该物品的体积,草药的价值相当于物品价值。时间复杂度01背包问题的时间复杂度等于 物品数量 × 背包容量,因此本题的时间复杂度是 O(nm)O(nm)O(nm)。C++ 代码#include <cstdio>#include...

2019-11-21 09:56:38 891

原创 noip2005普及组 校门外的树

题目校门外的树算法1(模拟,数组遍历) O(ML)O(ML)O(ML)定义一个长度为 L+1L+1 的布尔数组,表示每棵树的状态。true 表示已经被移走;false 表示未被移走。对于每次移动树木的操作 [Li,Ri][L_i,R_i][Li​,Ri​],直接循环一遍,将布尔数组中从 LiL_iLi​,到 RiR_iRi​ 这段赋值为true。最后统计值为 false 的数...

2019-11-20 10:01:46 367

原创 noip2005普及组 陶陶摘苹果

题目陶陶摘苹果算法(模拟,枚举) O(n)O(n)O(n)依次枚举每个苹果,判断陶陶的身高加上凳子的高度,是否大于等于苹果的高度即可。时间复杂度分析对每个苹果枚举一次,因此时间复杂度是 O(n)O(n)O(n),其中 nnn 是苹果数量。C++代码#include <cstdio>#include <cstring>#include <iostr...

2019-11-20 09:43:35 454

原创 noip2004普及组 火星人

题目火星人算法(贪心,全排列) O(nm)O(nm)O(nm)这道题目可以直接用next_permutation函数来做。这里我们考虑一下next_permutation函数的原理,然后手动实现一遍。对于给定的某个排列,我们想求出比它大的最小的排列。可以从后往前遍历这个排列,找到第一个可以让排列的字典序变大的位置。只有当序列单调下降时,它才不存在更大的排列,因此我们要找的位置就是...

2019-11-19 10:40:14 592

原创 noip2004普及组 FBI树

题目FBI树算法(递归,二叉树) O((N+1)2N)O((N+1)2^N)O((N+1)2N)对于样例来说,我们可以得到如下所示的满二叉树:可以递归处理整棵树,我们发现当输入字符串固定时,整棵树也就固定了,因此可以将字符串当做递归函数传入的参数。由于要输出后序遍历,因此需要先输出左子树和右子树,再输出当前节点的信息。从图中可以发现,左子树所对应的字符串即是当前字符串的前半段,右...

2019-11-19 10:19:11 386

原创 noip2004普及组 采摘花生

题目采摘花生算法(模拟) O(M2N2)O(M^2N^2)O(M2N2)由于题目中描述:“你先找出花生最多的植株,去采摘它的花生;然后再找 出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。”并且:可能只有部分植株下面长有花生,假设这些植株下的花生个数各不相同。因此整个采摘花生的过程是确定的,没有选择的余地,所以这道题目是一道模拟题...

2019-11-18 10:50:08 997

原创 noip2004普及组 不高兴的津津

题目不高兴的津津算法(模拟,枚举) O(n)O(n)O(n)枚举每一天,算出在校学习和在家学习的总时间的最大值。然后判断最大值是否大于8:如果最大值大于8,则输出那一天的编号;否则津津每天都会很开心,输出0.时间复杂度分析对每天处理一次,所以时间复杂度是 O(n)O(n)O(n),其中 nnn 是总天数。C++ 代码#include <cstdio>#in...

2019-11-18 10:25:58 348

原创 noip2003普及组 麦森数

题目麦森数算法(高精度,快速幂,数学) O(5002logP)O(500^2logP)O(5002logP)首先考虑如何求位数。我们发现在 10k∼10k+1−110^k∼10^{k+1}−110k∼10k+1−1,(k≥0)(k≥0)(k≥0)之间的数均有 k+1k+1k+1 位。因此对于任意正整数 xxx,它的位数是 ⌊log10x⌋+1⌊log10x⌋+1⌊log10x⌋+1。而...

2019-11-06 09:40:39 299

原创 noip2003普及组 栈

题目栈算法(组合计数,卡特兰数) O(n2)O(n^2)O(n2)首先任何一种合法的入栈、出栈操作序列都可以得到一个不同的1~n的排列,因此可以得到的排列总数等于合法入栈、出栈操作序列的个数。该问题等价于求第NNN项CatalanCatalanCatalan数。时间复杂度在本题中我们使用公式 Cnm=Cn−1m+Cn−1m−1C_n^m=C_{n-1}^m+C_{n−1}^{m−1...

2019-11-03 20:51:17 588

原创 noip2003普及组 数字游戏

题目数字游戏算法(DP,区间DP) O(n3m)O(n^3m)O(n3m)首先将环从起点处断开,然后复制一遍接在后面,这样原问题就转化成了线段型的模型。然后从集合角度来分析状态表示和状态计算:状态表示:f[l][r][i],表示所有将 a[l…r] 分割成 i 部分的方案的最大乘积;g[l][r][i] ,表示所有将 a[l…r] 分割成 i 部分的方案的最小乘积;状态计算:...

2019-10-30 17:12:56 694

原创 noip2003普及组 乒乓球

题目乒乓球算法(字符串处理,模拟) O(n)O(n)O(n)先将整个比赛情况读取进来,然后依次枚举在11分制和21分制下的比赛结果即可。在11分制下,一局比赛结束的条件是:某一方达到11分,且分差达到2;在21分制下,一局比赛结束的条件是:某一方达到21分,且分差达到2;注意最后如果比分是0:0,也要输出。时间复杂度每个字符处理一遍,因此时间复杂度是 O(n)O(n)O(n)...

2019-10-29 17:35:19 777

原创 a^b

题目描述求 a 的 b 次方对 p 取模的值。样例输入3 2 7输出2解释3^2 % 7 = 9 % 7 = 2分析按照朴素算法就是把aaa连乘bbb次,这样一来时间复杂度是O(b)O(b)O(b)也即是O(n)O(n)O(n)级别,快速幂能做到O(logn)O(logn)O(logn)。aba^bab,那么其实b是可以拆成二进制的,该二进制数第i位的权为2i−12^{i...

2019-07-23 02:21:20 157

原创 线性链表

线性链表 采用链式存储的线性表存储特点:每个结点都分两部分 数据域:存储元素的值 指针域:存放直接前趋或直接后继元素的地址信息链表的存储结构链表的定义和初始化struct LNode{ElemType data; // 数据域,ElemType代表某种数据类型struct LNode *next; // 指针域} ;LNode* head; // 定义头指针...

2018-10-10 01:52:27 3608

原创 线性表

线性表(Linear List)是由有限个相同类型的数据元素组成的有序序列,一般记作(a 1 ,a 2 ,…,a n )特点除了a 1 和a n 之外,任意元素a i 都有一个直接前趋a i-1 和一个直接后继a i+1 a 1 无前趋 a n 无后继表的长度:线性表中数据元素的个数空表:元素个数为0的表线性表的运算在线性表中,经常执行下列操作 确定线性表是否为空...

2018-10-10 01:22:25 220

原创 html第一天

一、html介绍计算机,高手–黑客最好的学习html方法,就是参考别人的网页,源代码查看网页源代码–打开网页,鼠标右键,查看源文件html非常重要通过一个案例,html制作一个html网页html文件是通过浏览器查看html标记语法,书写规则如何制作一个html网页文件*******裸奔(只有内容没有样式 )[1]新建一个记事本的文件,将它重命名*.html[2]在里面...

2018-10-09 01:08:11 172

原创 一元多项式乘法

已知A(x)=a0+a1x+⋯+anxn已知A\left( x \right) = {a_0} + {a_1}x + \cdots + {a_n}{x^n}已知A(x)=a0​+a1​x+⋯+an​xn和B(x)=b0+b1x+⋯+bmxmB\left( x \right) = {b_0} + {b_1}x + \cdots + {b_m}{x^m}B(x)=b0​+b1​x+⋯+bm​x...

2018-09-18 02:35:00 562

原创 求小于N的所有素数

筛法计算质数表 特点:能够快速筛选出区间 [2,N] 中的所有质数 算法: 在整数区间[2,N]内, ① 保留 2 同时去掉其他 2 的倍数, ② 保留 3 同时去掉其他 3 的倍数, ③ 保留 5 同时去掉其他 5 的倍数, ④ 保留 7 同时去掉其他的倍数,……,以此类推,一直到所有小于 N 的质数的倍数都被去掉,剩余的数字就是质数表  筛法计算质数表实例 求出2到20之...

2018-09-17 02:43:25 4206

原创 求两个数的最小公倍数

列举法 从小到大先找出8的倍数,再判断这个数是否是20的倍数,从中找出最小的、公共的一个。 考察:8,16,24,32,…….分解质因数法 分别把两个数分解质因数,8和20公倍数里,应当既包含8的所有质因数,又包含20的所 有质因数。对于两个数共有的质因数,比如2,在8中出现3次,在20中出现2次,则取3; 再把独有的质因数都取出来,把它们相乘,积就是最小公倍数,具体做法如下: 8...

2018-09-17 02:33:27 664

空空如也

空空如也

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

TA关注的人

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