自定义博客皮肤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)
  • 收藏
  • 关注

原创 第十三届重庆市大学生程序设计大赛(拿金奖题目讲解部分题目)

题目讲解顺序为思维难度顺序。

2025-05-16 16:35:50 664

原创 P1827 [USACO3.4] 美国血统 American Heritage

你的任务是在被给予奶牛家谱的“树中序遍历”和“树前序遍历”的符号后,创建奶牛家谱的“树的 后序遍历”的符号。先序遍历中的第一个字符在中序遍历的位置就是根节点,以此为分解将中序遍历分别划分成为左子树和右子树,将左右子树提出来重复以上操作我们就可以得到整颗树,这里是直接输出后续遍历那我们就不需要储存这个树,直接在遍历当前的左右子树后输出根就行了。他把他的奶牛 们的家谱作成二叉树,并且把二叉树以更线性的“树的中序遍历”和“树的前序遍历”的符号加以记录而 不是用图形的方法。单独的一行表示该树的后序遍历。

2025-01-25 16:01:35 589

原创 P1991 无线通讯网

这里要看两个点之间是否相连(直接或间接)就要用到并查集的技巧了,然后我们就需要先设计一下让哪些点作为我们的跟,我们要求的是距离中的最大值使其最小,那我们就直接从距离小的开始连线同时记录我们已经连了多少个点了记为k,(n为总的点的个数,m为卫星电话的个数)n-m就是我们至少需要连接的点的个数,满足条件之后直接输出答案就行。我们有m个卫星电话,这m个位置是没有距离限制的可以直接连线,然后就是以这条线上的点为起点去连接未连上的点,求取这个距离中的最大值。换句话说,每一对哨所之间的通话距离都是同一个 D。

2025-01-24 18:09:16 560

原创 P1433 吃奶酪(C语言)

之前提到了一个状态当状态的由来是不为一的(相同的两个点可能先走或者后走,但是走完两个点后的状态是相同的那就意味着后面可能是会进行相同的操作),所以我们需要将这种情况减去,我们再仔细想一下如果我们到达该状态所走的路程小于已经存储的路程那后面的路程不就一定会大于已经储存的答案吗。第 2 到第 (n+1) 行,每行两个实数,第 (i+1)(i+1) 行的实数分别表示第 ii 块奶酪的横纵坐标 xi,yi。对于两个点 (x1,y1),(x2,y2),两点之间的距离公式为 (x1−x2)^2+(y1−y2)^2​。

2025-01-11 12:57:48 357

原创 P1825 [USACO11OPEN] Corn Maze S(C语言)

题目要求输出从一个点到达目标位置使用的最短时间,这就是典型的一道BFS题目,但是有一点差别该迷宫存在一个传送门装置,那我们就只需要特别的在意一下传送门的实现。最优方案为:先向右走到装置的结点,花费一个单位时间,再到装置的另一个结点上,花费 0 个单位时间,然后再向右走一个,再向上走一个,到达出口处,总共花费了 3 个单位时间。如果一头奶牛处在这个装置的起点或者终点,这头奶牛就必须使用这个装置,奶牛在传送过后不会立刻进行第二次传送,即不会卡在传送装置的起点和终点之间来回传送。例如以下矩阵,N=5,M=6。

2025-01-06 13:38:07 993

原创 P2895 [USACO08FEB] Meteor Shower S(C语言)

题目描述Bessie hears that an extraordinary meteor shower is coming; reports say that these meteors will crash into earth and destroy anything they hit. Anxious for her safety, she vows to find her way to a safe location (one that is never destroyed by a mete

2025-01-03 15:46:21 2012

原创 P1990 覆盖墙壁

我们就是需要将一个2*N的地板铺上砖块,砖块有1*2的直线型(A型)还有'L'型(B型),刚拿到的时候都是一脸懵不知道应该怎么办,可以反着想一下题目要求就是需要我们用A.B两种砖铺成目标的图像,假设我们拼图已经到了最后的一步那现在不就是已经完成了吗?给定 NN,要求计算 2×N 的墙壁的覆盖方法。我们看着图先分析A型,我们可以直接将第n列填上,剩下的n-1列不就是我们研究的n-1列有多少方案吗?你有一个长为 N 宽为 2 的墙壁,给你两种砖头:一个长 2 宽 1,另一个是 L 型覆盖 3 个单元的砖头。

2024-12-31 19:39:14 658

原创 P1908 逆序对

我们需要找的是现在这个数前面有多少个数比它大,要是数组是有序的是不是就会简单很多,那我们就可以想到给它进行排序,一般的排序方法就肯定不行了,那我们比较的时候还要想到和数组原本的顺序还有关系,那我们就只有选择归并排序了。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。那我们现在就需要看看并的操作过程有什么猫腻了,并的过程就是不断地比较S(i)与S(j)的大小较小的存入当我们存入S(j)的时候就说明i一直到mid的值都是大于当前的值,存在(mid-i+1)个,输出序列中逆序对的数目。

2024-12-30 21:26:23 446

原创 P3799 小 Y 拼木棒

先来看看题目要求找寻木棒之间的关系,我们需要从中选出四根木棒来拼成一个正三角形,也就是三边要相等所以也就是说明我们选的其中两条长一点的边需要相等,剩余两条短一点的木棒和要等于长一点的边,有两条木棒长度相同我们就可以用这样的相等关系减少一重循环,我们再看两根短的求和等于长的,那就是说我们知道其中一条短的就可以知道另一条短的,现在我们就只需要二重循环就可以解决。这个题ai的值不大我们可以直接用一个桶来记录木棒的数目,我们还需要涉及一些简单的选择只需要选出来所以没有涉及排序,最后记得取模就行了。

2024-12-30 10:53:35 612

原创 P1249 最大乘积(C语言)

说明我们这里的第一个原则就是将其尽可能多的分出数,那我们就应该从2开始慢慢增加依次取数,那这时我们就会发现一个问题最后一个数取会大于给的数那是取到这个数还是前一个数,其实两种思路都可以实现,思路二:我们多加一个数,就会多出一个值(同样称其为余数),过程和思路一相同只不过不同的就是要去找减的数但是有一种特殊情况就是余数为1,2减1为1那这个1就需要加到最大的数上面。一个正整数一般可以分为几个互不相同的自然数的和,如 3=1+2,4=1+3,5=1+4=2+3,6=1+5=2+4。例8=2+3+4=3+5;

2024-12-29 17:03:26 638

原创 P3392 涂条纹(C语言)

这道题就是将N*M个小方块以行为分解分成白,蓝,红三个色块,数据最大只有50,那我们可以考虑直接暴力枚举,枚举的变量就是每两个色块的分界的行位置。现有一个棋盘状的布,分成了 N 行 M 列的格子,每个格子是白色蓝色红色之一,小 a 希望把这个布改成合法图案,方法是在一些格子上涂颜料,盖住之前的颜色。只要一个由 N×M 个小方块组成的旗帜符合如下规则,就是合法的图案。小 A 很懒,希望涂最少的格子,使这块布成为一个合法的图案。接下来 NN 行是一个矩阵,矩阵的每一个小方块是。一个整数,表示至少需要涂多少块。

2024-12-29 12:45:00 561

原创 P1255 数楼梯(C语言)

看到这道题最容易想到的就是直接一个DFS但是N值最大会到达5000那么就需要我们使用一个记忆化搜索,回头一想就会发现它的转移方程很简单F(n)=F(n-1)+F(n-2),我们就可以直接递推。这里观察得到n-2,那我们只需要上到前面两个台阶的方案数就可以递推出后面的数。这里我们还需要用到高精度加法。楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶。编一个程序,计算共有多少种不同的走法。

2024-12-21 20:50:14 485

原创 P3654 First Step (ファーストステップ)(C语言)

这道题就是一个简单的暴力枚举就行,我们可以写两个函数分别判断在现在这个点横向和纵向是否符合条件,我们需要特别注意一个问题那就是当只有一个成员时我们对于同一个点我们判断了两次那么我们就需要除以二。我们 Aqours 现在已经一共有 K 个队员了,要歌唱舞蹈起来的话,我们得排成一条 1×K的直线,一个接一个地站在篮球场的空地上呢 (横竖均可)。虽然学生会长看上去不怎么支持我们的样子,可是有了理事长的支持,我们还是被允许在校内的篮球场里歌唱!Aqours 的真正的粉丝的你,能帮我们算算吗!表示),空地 (用!

2024-12-21 13:22:31 1692

原创 P1045 [NOIP2003 普及组] 麦森数(C语言)

题目描述形如2P−12P−1的素数称为麦森数,这时PP一定也是个素数。但反过来不一定,即如果PP是个素数,2P−12P−1不一定也是素数。到 1998 年底,人们已找到了 37 个麦森数。最大的一个是P=3021377P=3021377,它有 909526 位。麦森数有许多重要应用,它与完全数密切相关。任务:输入P(1000<P<3100000)P(1000<P<3100000),计算2P−12P−1的位数和最后500500位数字(用十进制高精度数表

2024-12-20 19:08:19 421

原创 P1036 [NOIP2002 普及组] 选数(C语言)

已知 n 个整数 x1,x2,⋯,xn​,以及 11 个整数 kk(k

2024-12-20 17:19:34 417

原创 P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two( C语言)

两头牛和 Farmer John 可以在同一个格子内(当他们相遇时),但是他们都不能进入有障碍的格子。1.我们可以通过生成专属值的方法来判断:农夫的x坐标+他的y坐标* 10+奶牛的x坐标* 100+奶牛的y坐标* 1000+农夫的方向* 10000+奶牛的方向* 40000(农夫方向最多为4)。看到这道题就是一个简单的模拟,我们需要解决的就是人和牛的移动,一共存在两种状态一种是移动另一种就是顺时针转向,我们可以用一个值来确定前进的方向,解决完这个问题之后我们还有一个问题那就是他们两个能否相遇。

2024-12-20 16:21:04 667

原创 7-20 字符串解压(C语言)

输入压缩后的字符串,输出压缩前的字符串。压缩的方法是把连续的相同字母压缩为"长度+字母"的形式,在本题中,。例如:3a5bx,解压后的结果为:aaabbbbbx;例如:12ab10c2ax 解压后的结果为:aaaaaaaaaaaabbbbbbbbbbccax。

2024-12-19 13:46:35 1247

原创 P1047 [NOIP2005 普及组] 校门外的树(三种不同方法解题)(C语言)

某校大门外长度为 ll 的马路上有一排树,每两棵相邻的树之间的间隔都是 11 米。我们可以把马路看成一个数轴,马路的一端在数轴 00 的位置,另一端在 ll 的位置;数轴上的每个整数点,即 0,1,2,…,l0,1,2,…,l,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

2024-12-18 20:58:22 2182

原创 6-4 去字符串中的重复字符与空格(C语言)

dele函数的功能:对给定的字符串,去掉重复的字符与字符串中的空格后,按照字符ASCII码顺序从小到大排序后输出。裁判测试程序样例:输入样例:输出样例: 对于这道题要求共有两个,要求一是去除重复的字符和空格,二是将其以ASCII码从小到大排序,那么可以直接用一个桶来实现,首先遍历输入的字符串使其对应的值为1,然后顺序替换arr数组中的字符(替换条件非空格且对应桶的值为一),注意输出使用的是puts那么应该再自己替换后的数组后一个位置加上'\0'来结束。附上

2024-12-18 16:16:06 431

原创 7-20 判断两个字符串是否为变位词(C语言)

如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词。比如,”heart”与”earth”互为变位 词,”Mary”与”arMy”也互为变位词。

2024-12-17 23:30:09 638 1

空空如也

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

TA关注的人

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