- 博客(9)
- 收藏
- 关注
原创 错误日志-字符串双向BFS
是在原字符串的基础上删除和插入,后续再还原,本来以为是continue那块少了还原,后来还原了发现测试点过的更少了(修正:当时语句的位置放错了,放在了pos++后面,导致还原错误,其实是可以ac的), 于是干脆创建新变量接收。1.考虑不周:find()只返回第一个找到的位置,一开始尝试用所有规则去替换子串时没有加while,只替换了一次,没有考虑后续的位置也可能可以替换。4.越界:from和to一开始是写在if(~pos)外的,导致一个测试点RE了。debug了1个多小时,错的五花八门啊。
2025-08-01 21:26:17
271
原创 双向广度优先搜索-模板题
对于只写过传统bfs的小白来说,需要注意的是,小B虽然每次移动两个位置,但最好还是当成移动一个位置处理,否则还要判断移动过程中有没有碰到障碍。双向BFS实际是对传统BFS的一种优化,在没什么障碍的情况下,bfs的节点数随层数指数级增长,双向直接减少了一半层数,能有效解决这个问题。题中描述小A,小B同时行动,且两人的速度和方向不一致,传统BFS不好处理,几乎明示了就是用双向BFS做。解题思路就是小A和小B同步向外扩展节点,并实时记录已经经过的位置,当碰到对方经过的位置时,搜索结束。
2025-07-26 12:20:50
136
原创 栈-入门题
我刚开始的想法是出站的顺序不可预测,但是入栈前都是升序,所以决定反着做,比如给定54123,逆操作就是对32145进行入栈出栈,使其变为54321。思路是寻找32145的最大字典序(用贪心,另开数组suf记录后n项的最大值(对32145来说),遍历32145,每个数入栈,遍历栈,如果栈顶大于suf[i+1],就出站记录),看其是否符合54321。n,每节车厢可以按照原有顺序独立地进站和出站,进站后只要在最外边,可以随时出站。(挺罗里吧嗦的,有若干组数据,每组数据以N开头,如果N为0就结束。
2025-07-20 14:00:00
816
原创 位运算—25牛客多校2—B.位完美
异或的规则是相同为0,不同为1,3(0101) XOR 5(1001) = 6(1100),虽然3和5的最低位被抵消了,但是3的最高位保留了,对5来说就是-1+2,所以最终结果比两者都大。如果不同,对于较大的一方来说,二进制中可能变化的范围是较小数的最高位到最低位,因为2^0+2^1+2^2+…+2^(n-1) = 2^n-1;所以我们需要确定数组a中每个数的二进制最高位,并用cnt[maxn]遍历a数组,对二进制数中每个1的位置进行累加,之后再遍历a,检查cnt[最高位]是否大于0,如果大于就是“NO”
2025-07-20 12:44:39
263
原创 bfs,2025福建多校-H滑板火箭
上式成立的条件是l < r(不懂的可以往后看,可以在路径上前后倒腾),假设滑板一分钟的步数范围是[6,6],而bfs计算出res==7,t显然不符合上面的公式。因为最多可以一分钟r步,所以最后的t=res/r+(res%r?先来简单的分类讨论,为了更形象,假设l=r=2,t至少等于res/r,如果res%r==0,则+0;如果res%r==1,为了方便理解,令res=3。例举发现,当r=l=4,6等其他偶数时,当res为偶数,t=res/r+(res%r?即res%r的结果是奇数时t=res/r+1;
2025-07-13 02:57:43
156
原创 PTA-ACM#(7-4)畅通工程(最小生成树,并查集)【仅作为自己的错误日志】2025.4.15
本代码采用Kruskal算法,即最小生成树至少包括一条最短边省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。
2025-04-15 18:53:34
250
原创 平分可乐(仅作为自己的错误日志)
痛定思痛:无论几维数组,用memset初始化只需调用一次。而c++中的fill要n-1次,切忌混淆。定义了一个三维的vis数组,在memset数组时,脑子一抽写了两层for,成为超时最大原因。没用的小知识:memset调用1万次会超过400ms(具体多少不知道)PTA_acm作业(6)非常可乐。
2025-04-02 17:25:53
102
1
空空如也
关于求曼哈顿距离之和最大的原理
2025-07-21
有哪位佬知道题解里的|len1-len*2|和n^(1/2)*logn有什么说法吗
2025-05-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人