- 博客(15)
- 收藏
- 关注
原创 pta列车调度
将数插入集合,左边(队尾)是小右边是大,查询插入的时候要判断当前这个数是否是小于队尾这个数,则找一个和自己相差不多的队插入,并自动排序。否则新开一个队,将数存进去。无序序列火车要通过n隧道然后到达出去时变得成为一条从左到右是严格递增的序列。求最短的隧道多少条?每次插入一个数的同时删去当前队中最左边的数,表示已经排好队的。找到最长的递增的子序列。
2024-12-10 19:50:20
224
原创 整数二分查找有两种不同
记住最大化和最小化,最小化:要找的点在最左边,所以在右边都是可行解。最大化:要找的点在最右边,所以可行解在左边最小化代码所以要是想找到某个数要先排序然后进行二分模版是通用的直接用最小化来做mid相当于可行解,表示那个最左边的位置,要找到的就是x在数的范围那道题目是要找到相同的数的最小下标和最大下标,那就直接在找到最小下标的时候加一个while(arr[r]==x)r++;要是不相等就直接退出,则找得到了最大的那个数.但是这样会爆掉所有只能最大化。
2024-12-08 12:58:23
189
原创 p1019单词接龙
用一个新的字符串来连接,ans用来记长度,在每一次递的过程都进行更新长度,枚举每一个单词(旧字符串),用一个for来枚举前缀的位置,里面一个判断主要用来判断是否超过两次和新字符串后缀和旧字符串前缀是否一样,且j从1开始,符合则加入后继续爆搜。给出头字母和单词让你用头字母连接单词,新字符串的尾部和旧字符串的头部有重叠表示可以连接。重叠的的长度不能大于这新字符串和旧字符串两者的长度,并且旧字符串最多只能被访问2次。used[i]表示的是i位置的单词的使用次数。用一个新的字符串表示连接的主字符串s。
2024-12-03 21:56:05
215
原创 pta 最长对称子串
用getline来输入,然后用两个循环把边界给限制住,保证不出现i>=j这种情况,这两个是不重合的,然后用start和end两个指针(确保两个指针不会越界但是可以相等)不断循环来找到一样的然后指针压缩到两边不相同的元素。然后就初始化并且退出循环,否则的话可以进行压缩,分两种情况一种是两边对称,还有一种是重叠。ss(字符串),i(左边界),j(右边界),start(左指针),end(右指针指针),cnt(用来计算每个子串的长度)这个题目的主要意思就是:一个子串(指的是那些连续的对称的)
2024-09-28 00:48:02
506
原创 Pta连续因子
开始的时候先去判断n是否是素数,要是不是素数那么就去他们的区域里面找最小的那个数,然后初始化s(用来存放因子的积),然后用一个循环从i开始直到s<=n;为止,在里面就是去判断因子是否和n整除,要是整除且开始因子个数要大于在此之前累加的因子个数,要是都成立就更新开始值(因为i不会变在找连续的个数的时候。介绍变量:s(因子累乘的积),start(确定子序列开始的位置),l(连续因子的个数),j(记录i开始到是s>n停止),i(最小因子所在的区域)要是是素数就输出1和他的连续的因子本身。
2024-09-24 08:22:56
623
原创 帅到没朋友
这道题就是说,上面有这么多个人,他自己发朋友圈和朋友发的朋友圈,假设可以看到所有人,然后最后给一些样例id判定上面的朋友他们是否有,要是下面的所有人的id就说明没有陪朋友,注意:要是上面给的朋友朋友圈要是只有一个id就是自己的,要是给出两个以上的朋友id才能保证里面有一个朋友。索引处理有两种一种是以字符串转为整形和直接就是整形,这两种一种是直接可以输出,不用在输出的时候进行处理。id的范围是(00000到99999)可以考虑开怎么大的数组来作为索引,作为索引可以。
2024-09-22 22:14:27
322
原创 后序和中序遍历得到一颗二叉树
/然后找到左子树的长度然后去到后序排序设左子树的最右边界为x然后根据两序列左子树个数相同成立等式求出x(画图好理解)然后进行递归。//找完左子树就去找右子树,在后序排序中设x2为右子树的最左边,和中序的右子树个数相同成立等式。//这种方法是通过找到后序遍历的根节点然后用指针记录它的数据,,并且去找到对应中序的位置。要是想要得到层序遍历那就要使用队列来处理。将re这部分代码改一下就ok了。
2024-09-22 16:50:38
208
原创 world cup
为什么左边界是大于6呢,因为这是成立的贪心的情况(就是每次都拿第一),但是在这个成立的基础之上他可能比其他组的还要大,这里都是假设淘汰的队伍都是实力最小比如是1 ,2,3,4,5,6的队伍,他是7。每个边界条件都是上一个边界条件的*2+1 但是进入进入8强不是进入16强的*2+1,因为他有来过符合的条件。将32队分成8组,每组4队,两两进行比赛,每一个队要进行3场比赛,每组都会有第一第二。假设有32支队伍,一共有16强,8强,4强,决胜赛,四场比赛。支队伍,编号为1的是中国队伍,每支队伍都有相应的实力值。
2024-09-20 16:14:24
401
原创 2024年预选赛M题
主要考察对map的使用,将名字和值结合,并且一个队伍名字有可以做对多道题目所以id是开26的数组。要是发现队名和题目id一致那就不进行处理,要是不重复的则这个题目id进行++;最后输出被做出题目数最多的id,要是被做出题目个数一样那就进行输出字典序小的。
2024-09-20 10:48:45
405
原创 pta N个数求和
4.每次进行通分后要进行求最简分数,就要找到最大公约数(gcd)用辗转相除法,然后将她们都进行化简。你也可以直接引用内置函数__gcd(x,y)2.遍历拿出数组内的元素,将两个的分母进行通分,有好多种情况,感觉还是直接的将两个分母相乘即可。5.最后判断是否有整数部分,再判断没有整数部分,然后再求分子和分母的大小,大于分母的话要进行求摸。我用一种比较笨的方法,就是存在数组里面再拿出来然后进行从开始到尾的两两比较;1.具体思路是将分子和分母分开用scanf来输入。3.分子就是和交叉相乘求和放到下个的分子内。
2024-09-20 00:20:44
239
原创 反转链表力扣
用一个if递下去,找到最后head= NULL,然后固定节点,为什么是固定点呢,因为他是递的过程和归的时候都是用new_node进行连接和返回,用head->next->next = head;(2)将开始的那个节点指向后面节点的指向那个节点,然后将end指向head,beg是不变的他的作用是用他的next来记录end的next,好让他进行完操作后进行移动,头节点动,有一个节点不动。两个指针每次开始的时候都是同样的位置,head用来移动,head一定在那两个的前面,因为开始是保留那个head原来节点。
2024-09-19 22:39:03
189
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人