头像

欢迎来到我的博客

分享题解与总结

摘要: 思路: 方向数组:(保存下一个位置的加减性) nxt[cur.ori][ai] 朝内 向左(沿坐标减小的方向走) nxt[0][0] = -1 朝内 向右(沿坐标增大的方向走) nxt[0][1] = 1 朝外 向左 nxt[1][0] = 1 朝外 向右 nxt[1][1] = -1 将1~m映射 阅读全文
posted @ 2026-02-18 11:56 king_steph1209 阅读(24) 评论(0) 推荐(0)
摘要: 这道题建议直接看董晓或涂老师两位大佬的讲解 这里只是梳理个人的做题思路 思路: DFS深搜 判断两个字符串可否拼接: substr+for循环找到最小拼接长度 记得回溯 减少字符串拷贝操作 比如:不需要记录最终字符串,再输出长度 不需要tmp=ans+s[i].substr(subl,s[i].le 阅读全文
posted @ 2026-02-17 10:27 king_steph1209 阅读(9) 评论(0) 推荐(0)
摘要: 思路: 对n中配料:选/不选,共2^n种可能——二进制枚举 #include<bits/stdc++.h> using ll=long long; using namespace std; ll n,cs=1,cb,ans=INT_MAX;//current-sour current-bitter 阅读全文
posted @ 2026-02-16 10:55 king_steph1209 阅读(7) 评论(0) 推荐(0)
摘要: 思路: (1)BFS 针对每一个e[i][j]==0的点进行BFS(涂色)。 (2)由于题目说"有一任意形状的由数字 1 构成的闭合圈", 那么找到这个闭合圈之后,直接输出即可,不需要继续染色。 (3)flag标记:此轮BFS是否碰到边界 如果碰到边界,本轮BFS完成后,将这些e[i][j]都改成- 阅读全文
posted @ 2026-02-16 10:24 king_steph1209 阅读(13) 评论(0) 推荐(0)
摘要: 思路: BFS模版题 nxt表示方向数组,一共八个方向 省去vis/book标记数组,直接用e[i][j] 1来判断 #include<bits/stdc++.h> #define M 405 using namespace std; int e[M][M],n,m,sx,sy; int nxt[8 阅读全文
posted @ 2026-02-16 09:52 king_steph1209 阅读(16) 评论(0) 推荐(0)
摘要: 思路: 全序关系+拓扑排序 题目实际上是确认是否存在唯一的全序关系 全序关系唯一 ⟺ 拓扑序唯一 ⟺ 每次 拓扑排序的队列中每时每刻最多有一个元素 (1)合法的情况: “提示:确定 n 个元素的顺序后即可结束程序,可以不用考虑确定顺序之后出现矛盾的情况” ——需要“加边”与“求拓扑序列”同时进行 — 阅读全文
posted @ 2026-02-13 20:30 king_steph1209 阅读(13) 评论(0) 推荐(0)
摘要: 思路: 1.要求找“最少按几次按钮” 相当于找A到B的最短路 2.使用BFS,从A开始扩展 3.BFS主体: 遍历每一种可能——从当前楼层head到达下一楼层nxt nxt取值于head+k[head]和head-k[head] 4.细节注意: 不需要增加"如果k[nxt]=0且nxt!=b就提前退 阅读全文
posted @ 2026-02-12 12:05 king_steph1209 阅读(11) 评论(0) 推荐(0)
摘要: 思路: 1.ch[i]存放列下标 2.dfs(i)代表现在遍历第几行 合法判断: 三个一维数组,分别判断三个方向: (1)(按行放置,则不用检查行冲突) (2)lie[j]记录(任意一行的)第j列有没有放过棋子 (3)xie1[i-j+n]记录第i-j+n号主对角线有没有放过棋子 (4)xie2[i 阅读全文
posted @ 2026-02-12 10:48 king_steph1209 阅读(13) 评论(0) 推荐(0)
摘要: 思路: 本题是有向无环图(DAG)上的最长路径问题。 dist[v]=max(dist[v],dist[u]+w(u,v)) 步骤: 1.输入,统计每一个点的入度 2.初始化dist[i],dist[i]记录:从1->i的最长路径的长度值 3.拓扑排序,以保证处理dist[v]时,所有可以直达v的 阅读全文
posted @ 2026-02-11 12:27 king_steph1209 阅读(19) 评论(0) 推荐(0)
摘要: 思路: 当仅:左+右>x时,考虑如下情况 关键考虑:两堆糖果,是选择吃左边这一堆,还是选择吃右边这一堆,吃多少? case1:两边都超过x:则左边先吃到刚好为x,右边吃空 case2:左边超过x,右边没超过:则左边先吃到刚好为x,右边吃空 case3:左边没超过,右边超过:右边吃到x-左边的值 ca 阅读全文
posted @ 2026-02-11 11:38 king_steph1209 阅读(15) 评论(0) 推荐(0)