自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 信息学奥赛一本通1197:山区建小学

c[i][j]表示在第i个村庄和第j个村庄之间建一所小学(例如在第3个村庄和第7个村庄之间建一所小学),第i个村庄和第j个村庄之间的所有村庄到这所小学的最短距离;另外,f[i][1]表示在i个村庄中建1所小学,那么。第11个村庄与第22个村庄距离为22,第22个村庄与第33个村庄距离为44,第33个村庄与第44个村庄距离为66,...,第99个村庄到第1010个村庄的距离为33。从第i个村庄到第j个村庄的距离就等于从第i个村庄去第j-1个村庄,再从第j-1个村庄去第j个村庄之间的距离,递推式为。

2024-08-30 14:49:01 1981

原创 信息学奥赛一本通1192:放苹果

2.盘子数小于或等于苹果数:此时又分两种放法: ①最后一个盘子空着,将苹果放在其他的盘子里:此时盘子数减1,苹果数不变,因此这种情况下放苹果的方案数为当苹果数为i,盘子数为j-1时的方案总数。即a[i][j] = a[i][i]。第二种:当苹果数量为1或0时,不管有多少个盘子,苹果将放在任意一个盘子里(或不放),其他盘子的苹果数为0,方案数为1。

2024-08-29 12:57:45 712

原创 信息学奥赛一本通1190:上台阶

除了前三阶以外,每一阶都必须从前一阶或前两阶或前三阶上来,因此走到这一阶的步数便等于走到前一阶+走到前两阶+走到前三阶的步数,由此可知递推式为a[i] = a[i-1]+a[i-2]+a[i-3]。前三阶的步数分别为1,2,4。楼梯有n𝑛(0<n<710<𝑛<71)阶台阶,上楼时可以一步上11阶,也可以一步上22阶,也可以一步上33阶,编程计算共有多少种不同的走法。输入的每一行包括一组测试数据,即为台阶数n𝑛。最后一行为00,表示测试结束。每一行输出对应一行输入的结果,即为走法的数目。

2024-08-29 09:41:06 487

原创 信息学奥赛一本通1314:【例3.6】过河卒(Noip2002)

【题目描述】棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上的某一点有一个对方的马(如C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点,如图3-1中的C点和P1,……,P8,卒不能通过对方马的控制点。棋盘用坐标表示,A点(0,0)、B点(n, m) (n,m为不超过20的整数),同样马的位置坐标是需要给出的,C≠A且C≠B。现在要求你计算出卒从A点能够到达B点的路径的条数。【输入】给出n、m和C点的坐标。【输出】从A点能够到达B点的路径的条数。

2024-08-28 18:47:41 1498 3

原创 信息学奥赛一本通1313:【例3.5】位数问题

综上所述,只需要知道1位数中含有奇数个三和偶数个三的数各有几个,便可以推算出后面的所有位数中含有奇数个三的数的数量和含有偶数个三的数的数量。由此可以得出两条递归式:a[i][1] = a[i-1][2]+a[i-1][1]*9,a[i][2] = a[i-1][1]+a[i-1][2]*9。定义一个数组a[1000][2],a[i][1]用于储存i位数中含有奇数个三的数有几个,a[i][2]用于统计i位数中含有偶数个三的数有几个。在所有的N𝑁位数中,有多少个数中有偶数个数字33?

2024-08-28 11:28:37 443

原创 信息学奥赛一本通1312:【例3.4】昆虫繁殖

由于卵需要2个月长成成虫,且成虫不死,因此当月成虫数即为上个月的成虫数加前两个月的卵数;又因为成虫需要x个月产y对卵,因此当月的卵数即为i-x月前的成虫数*y。由此可以得到两个递推式:成虫:a[i] = a[i-1]+b[i-2] 卵数:b[i] = y*a[i-x]。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过x𝑥个月产卵),问过z𝑧个月以后,共有成虫多少对?过𝑧个月以后,共有成虫对数。

2024-08-28 10:40:00 403 1

原创 递推——斐波那契数列

斐波那契数列:1,1,2,3,5,8,13,21,34……,从第三项开始,每一项都等于前两项之和的数列为斐波那契数列。本题为递推法的简单运用,编写一个程序,求此数列的第n项。

2024-08-28 10:19:09 468

原创 信息学奥赛一本通1328:【例7.7】光荣的梦想

【题目描述】Prince对他在这片大陆上维护的秩序感到满意,于是决定启程离开艾泽拉斯。在他动身之前,Prince决定赋予King_Bette最强大的能量以守护世界、保卫这里的平衡与和谐。在那个时代,平衡是个梦想。因为有很多奇异的物种拥有各种不稳定的能量,平衡瞬间即被打破。KB决定求助于你,帮助他完成这个梦想。一串数列即表示一个世界的状态。平衡是指这串数列以升序排列。而从一串无序数列到有序数列需要通过交换数列中的元素来实现。KB的能量只能交换相邻两个数字。他想知道他最少需要交换几次就能使数列有序。

2024-08-27 10:41:40 1194

原创 排序——归并排序

归并排序分为两大步:分解,合并。首先递归地将数组分成两个子序列,若子序列长度不为1,则继续递归地将子序列分解成两个小子序列,直至每个小子序列长度为1(有序),接着将两个有序的子序列合并成一个有序序列。在处理数据规模较小,数据较大和较多相等元素情况下优于快速排序;但在数据规模大和空间利用率上,快速排序优于归并排序。),同时它在运行时不会将两个相等的元素交换位置,属于稳定的算法。且它需要额外的辅助空间,因此它的空间复杂度为O(归并排序和快速排序一样,将原数组不断的分解成两个子序列,它的时间复杂度为O(

2024-08-27 10:15:53 224

原创 信息学奥赛一本通1170:计算2的N次方

【题目描述】任意给定一个正整数N(N<=100),计算2的n次方的值。【输入】输入一个正整数N。【输出】输出2的N次方的值。【输入样例】5【输出样例】32。

2024-08-25 19:52:57 354

原创 排序——快速排序

首先将待排序的数组以mid(mid=(1+n)/2)为记点,左边子序列中的元素若比mid大则移动到右边子序列中,右边子序列中的元素若比mid大则移动到左边子序列中,使得左边子序列中的元素均比mid小或等于mid,右边子序列中的元素均大于mid。对左右子序列重复此操作,直至排序完成。快速排序本质是将一个长度为n的数组拆分成两个子序列,寻找一个中间记点,将小于记点的元素放置在左边,大于记点的元素放在右边,接着对这两个子序列重复此操作,因此该算法的时间复杂度为O(属于不稳定但平均时间最快的一种排序方法。

2024-08-25 16:37:17 269

原创 排序——计数排序

计数排序统计各数出现的次数由输入数据的多少而定,因此该算法的时间复杂度为O(n),所需的存储空间据实际情况自行定义,空间复杂度为O(n),桶排序在特定情况下效率高,简单,缺点是只有待排序数据在一定范围内,数据为整型,且前后跨度较小时使用,否则将占用大量存储空间。当待排序的值在一个有限的范围内,可设计有限个有序桶,待排序的值装入相对应的桶,顺序输出各桶的值,将得到有序的数列。

2024-08-25 15:35:23 196

原创 排序——插入排序

像打牌一样,抓到的牌一本按照大小插入适当的位置,这样抓完所有的牌后,手中的牌便是有序的。同理,当读入一个元素时,在已经排序好的序列中找到它正确的位置,放入读入的元素,同时将它后面的所有元素向后移一位。在插入排序中,共进行n-1次选择,每次选择需遍历从i-1到1的区间,即1+2+…+(n-2)+(n-1)=第一步: 【9】8 6 7 5 4 2 3 1。第八步: 【2。第二步: 【第六步: 【第七步: 【第九步: 【

2024-08-24 10:45:19 191

原创 排序——冒泡排序

对于有些数据,可能不需要n-1轮排完,例如6 1 2 3 4 5,只需要一轮冒泡就可以排序完。于是,我们可以设置一个变量,如果一整轮冒泡都没有元素交换位置,说明整个数组都已有有序,在此退出循环,可以减少几轮冒泡。在待排序数组中,从第一个开始,依次比较相邻两个元素是否逆序,若为逆序对,则交换这两个元素的位置,经过一轮比较,最大或最小的元素排在最后,接着对第一个到第n-1个元素重复此操作,直至数组有序。在冒泡排序中,共进行n-1轮冒泡,每轮冒泡需进行n-i次比较,即(n-1)+(n-2)+(n-3)+…

2024-08-23 22:54:40 228

原创 排序——选择排序

在选择排序中,共进行n次选择,每次选择进行n-i次遍历,即(n-1)+(n-2)+(n-3)+…+1=n(n-1)/2,故时间复杂度为O(此外,由于所需存储空间不会随着n的变化而变化,因此空间复杂度为O(1),属于稳定但效率较低的算法。每次从待排序数组中选出最大或最小的一个元素,与待排序数组的第一个元素交换位置,直到数组有序。

2024-08-23 12:11:13 119

原创 信息学奥赛一本通1309:【例1.6】回文数(Noip1999)

例如:给定一个 10进制数 56,将 56加 65(即把56从右向左读),得到 121是一个回文数。写一个程序,给定一个N(2<N<=10或N=16)进制数 M.求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible”。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible”。n进制运算只需将位规范%10改为%n,进位由/10改为/n。第1行,给定一个N(2<N≤10或N=16)表示进制;第2行,一个N进制数M。

2024-08-19 14:59:58 364

原创 信息学奥赛一本通1308:高精除

由于被除数和除数均为大整数,所以无法直接用除法来得出答案,因此解题的思路是用减法来模拟除法。高精除以高精,求它们的商和余数。输入两个低于300位的正整数。

2024-08-08 12:17:08 241

原创 信息学奥赛一本通1307:高精度乘法

存储在数组里,方便计算。核心代码是c[i+j-1] += a[i]*b[j]+x(x表示进位),在每个外层循环的末尾,要把本次的进位加上(即c[i+len_b] = x),最后用while循环删除多余的前导0。输入两个高精度正整数M和N(M和N均小于100位)。求这两个高精度数的积。使用string类型的变量暂时储存输入的大整数,接着用for循环将它以整型。输入两个高精度正整数M和N。求这两个高精度数的积。

2024-07-23 11:07:16 399 1

原创 信息学奥赛一本通1169:大整数减法

存储在数组里,方便计算。核心代码是c[i] = a[i]+10-b[i](+10表示借位),最后用while循环删除多余的前导0。共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。使用string类型的变量暂时储存输入的大整数,接着用for循环将它以整型。求两个大的正整数相减的差。

2024-07-23 10:54:52 451

原创 信息学奥赛一本通1168:大整数加法

【题目描述】求两个不超过200位的非负整数的和。【输入】有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。【输出】一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。【输入样例】【输出样例】【解题思路】使用string类型的变量暂时储存输入的大整数,接着用for循环将它以整型逆序存储在数组里,方便计算。核心代码是c[i] = a[i]+b[i]+x(x表示进位),最后用while循环删除多余的前导0。【题解代码】

2024-07-23 10:37:20 488

空空如也

空空如也

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

TA关注的人

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