- 博客(30)
- 收藏
- 关注
原创 洛谷1449c语言
原本我想一次性将所有(不管是运算符号还是数字字符)以字符串的形式先进行读取,读取完毕之后将数字字符串转换为整型数字但是由于.还有运算符之间并没有进行分隔开来,注定我们只能使用getchar“逐字逐句”地进行读取。进行读取之后我们先要进行判断——是数字还是运算符,数字的话就将他加投入到数字之中直至遇到.为止——说明当前数字读取完毕——>放入数字的栈之中进行暂时的存储。因为使用的是getchar进行单个字符的读取,所以我们在读取的同时可以将栈中数据拿出进行计算,不需要再编写函数。
2025-03-27 18:34:34
172
原创 洛谷1044栈C语言
这是一道利用了https://i-blog.csdnimg.cn/direct/b30ac637a3e041afb82ae968c6669de0.jpeg栈进行种类的求解的题目,一开始想使用深搜进行解决但是这样不仅时间复杂度会很高而且很难实现没辙了,看题解——卡特兰数?什么鬼后面我才意识到这道题和栈的所谓联系就是这个卡特兰数,事实上是一道考验知识点的动态规划题目。
2025-03-27 18:32:20
408
原创 洛谷1280c语言题解
fs的优化对于我来说已经是到头了,但是数据太大,导致dfs时间复杂度增大,无法处理。休息的最长时间(和数字三角形类似进行倒推——“用未来影响过去”)一开始我想着使用dfs进行处理(dp的话还是比较难想的)定义dp【i】の含义:i时间点到达工作时间末尾能。
2025-02-14 11:44:49
128
原创 洛谷3390矩阵快速幂(快速幂变种)
你要怎么把函数计算的值赋给底数和result?遇上令人有些头疼的高数——线性代数的矩阵。你可以说他不难:矩阵快速幂=矩阵+快速幂。注意:快速幂的取模运算在矩阵乘法中别忘了。写出矩阵相乘的的函数你就解决了一半了。这个中间步骤处理不好就会人仰马翻。快速幂——原本并不算难的算法。碰撞出的火花——矩阵快速幂。
2025-02-07 17:09:03
161
原创 valiant‘s new map C语言代码题解
一开始看到各种大佬的动态规划啊就把小白我吓得不轻,后来总算找到了一种思路深得我心还是不行,因为数据太多到这个四重循环TLE:如何摆脱四重循环上面我们是传统思路:先找到总和符合条件的,再去把最小值挑出来判断我们能够在一个二重循环里面同时知道整体和个体是否符合条件就好了把这个看作一块模型我们给他喷上醒目的漆——代表符合要求,然后又是正方形的话就说明可行整体——前缀和个体怎么办?我们就让所有>=标准值的元素变为0前缀和为0既表示他是整体符合标准也代表所有的个体符合标准——一石二鸟。
2025-02-07 16:56:30
1355
原创 洛谷1577C语言题解
精度要求高、范围跨度大,要求我们在较小时间复杂度下缩小范围————二分法(唯一学过的此类方法)二分查找寻找合适长度绳子,在保证切的绳子数量足够(甚至超过时)切出的绳子最长。但是这道题最大的问题在于他绳长包含小数,误差不超过1%!这道题不同于二分搜索,借助的是二分的思想进行快速锁定。这道题要我们求按要求这些绳子最长能够切多长。按以前,小范围直接循环进行。
2025-02-04 16:44:24
332
原创 洛谷1115c语言
子段和——也就是两个前缀和进行相减11 12行的两个错误是相互联系的,如果j从i+1开始,那么单个元素的情况会被忽略(12正确书写时的情况),而12会导致这个子段和缺少原数组的i号元素最简单的前缀和代码+寻找最大子段和的代码有一个致命缺陷:时间复杂度高——O(N^2)但是当前的思路下这是能想到的最优解了。
2025-02-04 16:22:44
204
原创 洛谷5638c语言题解
这道题很明显能够看出来是和前缀和有关的:一部分是因为你只有真正意义上的一条“国道”可以走,没有像啊哈算法里面的最短路径那样纵横交错的单双行道(权重可能还不一样),其余原因下面讲我们的目的只有一个:走到最后一座城市我们要找的,就是在这条道上面,我们使用传送器最多可以省下多少的时间总时间是死的,剪掉最多省去的时间,就是我们最短用时。
2025-02-04 16:16:51
351
原创 洛谷P2249 【深基13.例1】查找c语言题解
总结:这种题目思路较为基础,使用最简单的循环一个一个进行搜索也是可以解决问题的,但是题目要求要求我们要使用更加快捷、高级的方法解决此类问题,提升代码的效率。原本这道题已经过了,但是本菜鸟再次复习时发现自己又双叒叕忘了(由此可见复习的重要性,尤其是各种基础知识点的复习)
2025-01-19 08:38:04
124
原创 洛谷5733C语言题解
以前的话我会写的特别的复杂,但是在实验室里学习了一个学期之后,代码明显短了很多。边读入边转化,再输出(其实这里先把他存储起来再最后进行输出会更加规范)写一个将小写字符转换为大写字符的函数。现将字符读入再转换之后进行输出。哈嗨嗨,来水一篇题解。
2024-12-25 20:40:29
224
原创 洛谷1739C语言题解
一开始看到这道题我想到之前看过的B站up主说类似题目用队列进行处理——可是我i队列只知道基础知识以及构建,除了广度搜索就没使用过队列啊(#`O′),于是我就先把题目放着没做。光是在输入的时候小于等于还不够,出了输入的那个循环之后,还要判断左右括号的个数是否相等。自己的思路:输入相关字符串,遇到括号(管你是左半还是右半)直接放到一个数组里面,根据题目可知:如果要让左右括号相互对应,那么左边括号的数量在你。——因为这里所说的左右括号配对指的就是先左括号,再右括号。进行一次次输入的时候一定是大于右括号数量的。
2024-12-18 21:01:37
268
原创 洛谷1443马的遍历
如果要使用dfs,我们先要写一个循环,再在循环当中修改start下,start有,destinationx,destinationy,再调用dfs函数,不光写起来很麻烦,时间复杂度还高,很容易就超时了。(个人认为其实可以将存储距离的数组的所有元素初始化为-1,后续将其覆盖即可(起点元素距离会被赋值为0))而且广度有一一个特点:得到的结果直接就是最小值(最小值相关题目的话)2.队列的初始化要写正确,正确理解队列当中head和tail的含义。🐎并不是所有点都能够走到的(所以会有-1(也就是到不了的点位))
2024-12-17 20:21:50
112
原创 洛谷1036c语言题解
而且m个数字的组合才算是一种(也就是m个数字之间进行调换是不算新的的)但是这道题里面的测试点2包括这样的:3 2 1 1 1。我们需要一个left变量跟随dfs进行加一操作。以下是两种代码(作为函数的变量还是不作为)也就是说,数组只能逐步向后取数字。
2024-12-10 22:16:39
183
原创 洛谷1618c语言题解
最基础的深度搜索,对回溯·1没啥要求,return就完事了。但是我觉得使用深度搜索会更好(最近在练习这些)跟火柴棒问题、全排列问题类似。一定要看清楚No的大小写。
2024-12-10 13:13:54
249
原创 洛谷1706C语言题解
这道题大概就是深度搜索最经典的例题了(具体思路可以去看阿哈算法(强烈安利))一定记得是step超过step最大值时再进行输出。
2024-12-09 18:59:06
105
原创 洛谷2241C语言题解
k×k 正方形:类似地,对于任意大小为 k×k 的正方形(其中 k <= n 并且 k <= m),我们可以在每一行和每一列中分别选择 (n - k + 1) 和 (m - k + 1) 个起始点。对于任意大小为 k×k 的正方形,其数量总是 (n - k + 1) * (m - k + 1),这里 n 和 m 分别代表棋盘的行数和列数。运用中学知识我们知道也就是在长度为n,一共n+1个点位中选择两个点位也就是C(2,n+1(n+1是数量))(符号表示就是C(2在左上,n+1在右下))种选择。
2024-12-05 20:46:44
648
原创 洛谷3156题解c语言
链表的性质决定了如果我们使用链表会要每查找一次就要遍历整个链表(while循环之后再进行特判)为什么不直接构建数组进行存储?
2024-11-19 19:30:16
180
原创 洛谷3383c语言。
老的方法就是设置一个isprime函数,遍历所给的范围内的所有的数,一个一个地判断,这样当然可以,但是根据题目的提示,我们可以采用埃氏筛的方法。我们可以先假设2开始到所给的范围内的所有数字都为质数,删除他们的倍数,那不管是素数的倍数还是剩余的其他类型的和数的倍数都被我们删去了。举个例子,,我们第二个循环从P*P开始,在i=2的时候,势必会遇到2*P的情况吧,那就一定会标记它为和数;看到代码,又会有疑问,为什么j是从i的平方开始,i的其他次方怎么办?放心,和数一定是素数与素数的乘积,一定会被删除。
2024-11-08 19:42:25
228
原创 洛谷3741C语言题解
我们step1就把原本就连续的进行统计,之后标注他们已经被查找过,step 2查找是否有符合条件的字符,一旦有就加加,然后跳出循环(根据题目)这道题要查找连续的字符’VK‘,但是最多只能修改一次,有两种情况可以进行修改VV 和KK,
2024-11-04 19:22:26
295
1
原创 P2615 [NOIP2015 提高组] 神奇的幻方 c语言题解
接下来呢将阐述我自己对于这道题目的一个理解。一开始感觉这道题不算太难,跟着题目写就能写出来(当然想到用两个数组表示其坐标还是不好想)。小菜我也是借助AI才发现这一点(不得不说AI检查代码是真的方便),具体我也将不太清楚,自己带几个值去试一下就应该能理解了。于是,题目在最后一种情况里面挖了一个大坑,右下,相对于上面那几种情况并不是那么明确的一个坐标——越界怎么办?
2024-11-03 21:58:47
201
原创 对于 Prudento的高精度阶乘题解进一步解释(也算是对自己学习的总结吧)
进位的话就和高精度加法是差不多的(其实我觉得没区别),大于9就往前进一位(数字方面而不是数组,数组是往后存储的)这道题最重要的就是高精度计算,不仅仅是加法,还有乘法;没记错的话,乘法没用高精度来算的话只能过一个测试点;它的步骤和我们自己算乘法的步骤很像,就是每一位分别乘上乘数,在进行进位;以下为 Prudento大佬的题解代码(鄙人稍微多添加了一点注释)需要一个数组,存储着我们要的那个数的每一位,那么,问题来了,如何做高精度的乘法呢?
2024-11-01 07:19:07
234
原创 洛谷1553 c语言题解(易理解版本)
自认为这个函数是整个代码的点睛之笔,不会重复反转还规避了奇数偶数个数的问题还没有用for循环的嵌套。一开始想把数字字符全部转换成int 类型的数字,结果万里江山一片红。无奈,只好换个思路。改写代码的时候突然发现,这两个混用要出tmd大问题;一开始想把1 4放一块2 3放一块。
2024-10-31 13:50:57
267
原创 洛谷2415 c语言题解(感谢又菜又爱玩的代码,本题解因为你的代码而存在)
//#include<stdio.h>//#include<math.h>//long long sumj(int arr[],int len){// long long sum=0;/* for(int i=0;i<len;i++){ sum+=arr[i]*(pow(2,len-1)); } return sum;}int main(){ int s[30]; int cnt=0; for(
2024-10-30 23:13:26
106
原创 洛谷1217题解(感谢Singingyuna,由你代码优化(自认为认为是做了优化QWQ)而来)
不知道这算不算原创,管理大大一定要看我的标题啊QAQ。
2024-10-30 23:10:23
118
原创 洛谷5738题解(c语言)无脑解法
题目:n(n≤100) 名同学参加歌唱比赛,并接受 m(m≤20)m(m≤20) 名评委的评分,评分范围是 00 到 1010 分。这名同学的得分就是这些评委给分中去掉一个最高分,去掉一个最低分,剩下 m−2m−2 个评分的平均数。请问得分最高的同学分数是多少?评分保留 22 位小数。
2024-10-29 21:46:06
838
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人