自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2.23C语言学习

高精度数除以非高精度数。

2024-02-23 23:50:38 283

原创 2.21C语言学习

Floyd算法是一个经典的动态规划算法,它又被称为插点法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。Floyd算法是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,算法目标是寻找从点i到点j的最短路径。从任意节点i到任意节点j的最短路径不外乎2种可能,1是直接从i到j,2是从i经过若干个节点k到j。

2024-02-22 00:42:59 1097

原创 2.20C语言学习

C++中int型变量所占的位数为4个字节,即32位0x3f显然不是int型变量中单个字节的最大值,应该是0x7f=0111 1111 B那为什么要赋值0x3f:作为无穷大使用因为4个字节均为0x3f时,0x3f3f3f3f的十进制是1061109567,也就是10^ 9级别的(和0x7fffffff一个数量级),而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形。可以保证无穷大加无穷大仍然不会超限。

2024-02-21 00:19:15 700 1

原创 2.19C语言学习

因为把相邻两个硬币翻转两次相当于不翻,所以最优方案中同一组硬币最多只会翻转一次,故翻转顺序无后效性,考虑贪心:从前往后比较,发现一个不同的硬币就把它和他后面的硬币翻转,计数器累加,这样最后累加结果一定是最优方案的次数。

2024-02-20 00:30:08 285

原创 2.18C语言学习

在AD中,单位长度为11的有两个,AJ,JD。同理AB中单位长度为11的有三个,单位长度为22的有两个,单位长度为33的有一个。这道题的题意很简单,就是给你一个长方形,求出长方形里有多少个小长方形和正方形(长方形中不包括正方形)。一道典型的动态规划题,但是我一开始想都没想就当dfs走迷宫来写,结果只有80分,最后一个测试点t了,先看看我的dfs代码。每一步都由上一步决定,上一步有两种可能,一种是上面,一种是左边,因此则有了下面的代码。一道折磨了我很久的题,最后给我说答案是错误的,我直接吐血了,憋屈死了。

2024-02-19 00:19:03 694

原创 2.17C语言学习

写完后发现题解里面用的是优先队列或者二分什么的,其实这个题可以贪心,我们把学校的分数线和学生的成绩分别进行排序,然后从前往后遍历,每次比较当前学校的分数与学生成绩的差距和下一个学校的分数与学生成绩之间的差距,如果前面那个小就把他加进sum,遍历完所有学生即可得出答案,记得有一点就是遍历下一个学生时,学校不往后推,不然结果会错误。

2024-02-18 01:06:44 1258

原创 2.16C语言学习

一开始以为是普通的二重循环,结果做出来答案是错的,但是思路不可能有问题,于是抱着试一试的想法加了一个排序,这样就过了,每次在第二重循环里遇到大于最小能听到的距离就跳出循环,进入下一轮,一直遍历完就行了。

2024-02-16 23:13:52 444

原创 2.14C语言学习

出去拜年了很晚才回来,复习了一下以前的知识。队列的构建和一些操作。

2024-02-14 22:42:14 100

原创 2.8C语言学习

什么是二维前缀和首先我们要明白前缀和是个什么东西:“前缀和”是在一维数组中(假设该数组为 ar[] ,以ar[1] 作为第一个ar数组的第一个元素)说的,那么第i个元素的前缀和sum[i] = ar[1 ] +ar[2] + …+ar[i];

2024-02-09 00:07:41 704 1

原创 2.7C语言学习

一道运用并查集来写的题,对每次操作用并查集处理,同时进行是否是一个共同祖先的判断,每次合并两个节点,显然如果原先不连通那么合并之后联通块数量--,操作一次就对n减一次,如果n等于1了说明修复成功。

2024-02-07 23:59:51 816 1

原创 2.6C语言学习

一道提高减的题目,但是做法却比较朴素,遍历找最大值就能得出结果,看了题解的dp和各种前缀和做法顿时感觉自愧不如,不过能做出来的方法就是好方法,下面是我的代码。

2024-02-07 00:29:35 332 1

原创 2.5C语言学习

第一眼看到这道题想到的是动态规划,可能是最近一直在看这种题,但是我也不会怎么写,看到题解区的dfs我才想到可以搜索,可是要怎么搜呢,这是一个棘手的问题,题目还有进位操作,但是拆分下来也就只有三个操作,加减拆,所以不妨以这三种状态遍历搜索。

2024-02-05 23:50:11 1786 1

原创 2.2C语言学习

杨辉三角有 第0层, 所以第n层,与第n行含义不同 第n行 为第n-1 层,下面结论 要分辨 行与层第0层 1第1层 1 1第2层 1 2 1第3层 1 3 3 1第4层 1 4 6 4 1第5层 1 5 10 10 5 1第6层 1 6 15 20 15 6 1第7层 1 7 21 35 35 21 7 1第8层 1 8 28 56 70 56 28 8 1第9层 1 9 36 84 126 126 84 36 9 1根据数位于的层数和对角线数可以计算数是第几个。

2024-02-02 23:47:08 258

原创 2.1C语言学习

单词的接龙原则如下,要注意有几个限定条件。

2024-02-01 23:36:24 649 1

原创 1.31C语言学习

一看题。dfs,应该不难,把代码写出来了,验证一下,发现答案怎么多了这么多对自己的dfs过程推导了一下,发现会有重复计算的部分,那怎么样才能够去重呢,又是一个煞费脑力的问题其实这里的难点是:如何去重?答案是:不降原则不降原则是个神马意思呢知道了不降原则,咱们再来see see代码也是费了一番力气。

2024-02-01 00:22:21 287 1

原创 1.30C语言学习

叉树每个结点最多有两个孩子,所以为它设计-一个数据域和两个指针域是比较自然的想法,我们称这样的链表叫做二叉链表。// 孩子表示法int val;// 数据域Node left;// 左孩子的引用,常常代表左孩子为根的整棵左子树Node right;// 右孩子的引用,常常代表右孩子为根的整棵右子树// 孩子双亲表示法int val;// 数据域Node left;// 左孩子的引用,常常代表左孩子为根的整棵左子树Node right;// 右孩子的引用,常常代表右孩子为根的整棵右子树。

2024-01-30 23:47:17 750 1

原创 1.29C语言学习

一眼就能看出dfs,但是我一开始没有做出来,只能说是自己这方面确实实力不够,题目不是特别模板就不是很会做了,看了题解的巧妙方法才会,直接把值放在每一步为下标的数组中,然后每一次新循环会把上一轮的值覆盖掉,实在是妙,我一开始就对他的输出琢磨了一段时间,想用桶的方法试试结果发现错了。

2024-01-30 00:10:19 648 1

原创 1.28C语言学习

一开始用set过了的题,但是秉承着多学习东西的精神还是来看了看单调队列,but本人的实力太弱了,纯用C语言实现的单调队列看不懂,只能找stl容器版本的来学习了,不过思路的差距倒是不大,stl写的更加易懂。

2024-01-28 23:29:06 374

原创 1.26C语言学习

帮别人找错找了很久int a, b;// a代表总人数,b代表被杀掉的数字 //if (p!sum--;flag=0;printf("活着的人的编号:");i < a;} else {printf("错误:无法执行此操作!\n");exit(1);return 0;

2024-01-26 22:59:37 481 1

原创 1.25C语言学习

②对于自定义数据类型的话,我们不论是要改变排序方式,还是不改变都要这样 -- 重载 小于( < ) 运算符:因为,如果你不重载比较运算符的话,编译器无法比较自定义数据类型的大小关系。然而又因为在priority_queue的内部,只需用到 小于号(<),所以我们只需要重载小于号即可。当然对于自定义数据类型来说,也是必须重载,否则将无法使用priority_queue。

2024-01-25 22:53:34 592

原创 1.24C语言学习

对于第i行j列的数寻找规律,可以发现同列的j都是一样的,同逆对角线,i+j的值是相同的,同顺对角线i-j的值是相同的,可以用3个一维数组记录是否被选取的状态,主义i-j可能会越界,在记录的时候加上一个题目给出的n就好了,用到了dfs的方法,记住在每一次选择完成后进行回溯。接下来便是双端链表的插入,分为三种,头部插入,中间插入,尾部插入,头部插入和尾部插入形式类似,而中间插入则有四步操作,更换四个指针,要注意指针在更换时此时所指的位置,不然四个指针位置转换的顺序很可能会出错,导致结果错误。

2024-01-24 22:45:23 842

原创 1.23C语言学习

P1106删数问题题目要输入一个高精度数然后指定删除数字个数使得删除之后的数字最小,看了题目一直在纠结是不是找最大的数字删除,在纸上推算了一下发现这么做是不对的,看了题解才知道要从最左边的位数开始,如果有存在左边的数字大于右边的数字,则要进行删除处理,而删除的操作就是在数组上用后一个数字覆盖前一个数字直到数组的末尾,原本想用链表进行删除操作的,但是把握不住输出,不知道怎么处理,就还是用数组了,最后发现还要处理前面数字为0以及数字等于0的情况,折磨了很久。P1928外星密码。

2024-01-23 22:05:52 345

原创 1.22C语言学习

一看到这个题就想到了以前做过的区间排序,这个题要用贪心的思路,所以怎么贪才是关键,想了一会想不出来了只能去题解寻找帮助,看到了dalao的题解受了启发,定义了一个vis数组表示数字是否取到,再对所有区间按照右区间的大小进行排序,从右端点开始取数字。在存储一大波数时,我们通常用的是数组,但是有时候数组不太灵活,比如我们要在数组中间插入一个数,那么我们要把插入的那个数后面的数都往后面移一位,然后在中间空缺的那个位置填入该数,就会十分麻烦与繁琐,所以引入了链表这一概念。下面是链表的构建和输出。

2024-01-22 21:01:00 375

原创 羊村快递站(模拟)

3、当要取的快递位于惩罚通道口时,会直接取走自己的快递,随后整个通道就会向前移动让下一件快递位于通道口。4、当要取的快递不位于惩罚通道口时,沸羊羊会将快递依次取出并放入快递车上,直到取到取件羊的快递,放入快递车的快递将会受到终极惩罚:被送回发货地,沸羊羊会将这些被打回的快递记录下来,当这些快递的取件羊来取件的时候,将会被告知取件失败。5、每件进入惩罚通道的快递都会被记录下来,所以每个取件羊来到的快递站的时候,沸羊羊都会先告诉它要取的快递在哪个通道里。

2024-01-04 00:43:01 360 1

原创 问题 G: 套马的汉子

如果矩阵A中存在这样的一个元素A [ i , j ]满足条件:A [ i , j ]是第i行中值最小的元素,且又是第 j 列中值最小的元素,则称之为该矩阵的一个马鞍点。即现在给你n个相同大小的矩阵,每个矩阵的大小是x*y。一天ysj写出来了一个题目,在实验室里欢呼,wtj看到他这么高兴,就过去看了看他写了个什么题目。(1<x,y<10)只有(1,1)这个位置在三个矩阵中都是马鞍点,所以套马点的个数为1。在第二个矩阵中 马鞍点的位置为(1,1)(2,2)在第三个矩阵中 马鞍点的位置为 (1,1)(2,4)

2023-12-12 22:19:24 17

原创 对于缩位处理的一点想法

第三步.再把每个数字“缩位”处理:就是把每个位的数字相加,得出的数字如果不是一位数字, 就再缩位,直到变成一位数字为止。例如: 228 => 2+2+8=12=>1+2=3。钻研了二十多分钟想到的一个不用数组的方法,不算什么好的方法(本蒟蒻觉得还算巧妙),代码如下。一个解题过程的中间步骤,题目较简单我就不放出来完整的了。

2023-12-06 00:28:28 27 1

原创 周老师的区间排序

一开始想用一个全是0的数组把出现过的左区间到右区间的下标全部变为1,然后再输出所有中间是1的连续区间,因为我觉得这样很快,但是不知为何超时了,样例是过了,问了下师父了解了如果有一个区间如果是1-1e7我会一个一个赋值(后想到差分可以解决,我就不在此赘述了,大家可以自己去试试),自己瞎学了一会c++之后发现可以用sort进行一个快速排序,再整合区间,那么代码如下。周老师无聊时乱写了 n 个区间,但处女座的他随后又想将 n 个区间整理合并,但他发现区间太多了,于是他想请你帮帮他。

2023-12-06 00:18:33 28 1

原创 数数字

题目描述:问题很简单有个1到n的数列,数一下其中能够被2,3,5整除的数字的个数。例如当n = 6 ,的时候有 2,3,4,5 , 6.这5个数满足条件,所以我们应该输出5,是不是很简单?

2023-11-23 13:11:20 62 1

空空如也

空空如也

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

TA关注的人

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