摘要: 题目描述 地砖有红和黑两种颜色,站在给定的某个黑色地砖上,问有多少块黑色地砖可达? f1 dfs计算连通性 基本分析 dfs返回什么?从当前节点出发可达的黑色地砖个数 dfs怎么实现? 初始化cnt; 修改vis状态; 枚举可选的4相邻地砖(越界跳过,访问过跳过,红色跳过,累加下一步可达的个数) 返 阅读全文
posted @ 2023-05-08 17:44 zhangk1988 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 题目描述 给出n*n的含有 "."和"#"的格子,判断能都从起点到终点? f1 dfs求联通性 基本分析 dfs的思路是什么? (1)参数:当前遍历到的坐标 (2)决策: 堵住: 返回false 到终点:true 枚举4个相邻格子 出界 跳过 访问过 跳过 可达:下一步true,返回true 4个格 阅读全文
posted @ 2023-05-08 14:26 zhangk1988 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 题目描述 补充完整9*9的数独 f1 深搜 + 减枝 + 状态压缩 基本分析 深搜的维度是什么?还有多少个空没填 每次进行搜索时候怎么进行最优化?从所有的可能中找确定性最高的一个分支 状态压缩 (1)怎么判断行、列、格子中应该填哪些数字?每一行、或者列、或者格子内的值都是一个9位的二进制值,某位置是 阅读全文
posted @ 2023-05-06 17:26 zhangk1988 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 题目描述 每辆缆车承重一样,每个猫重量不一,最少需要多少缆车把猫运下山? f1-深搜+减枝 基本分析 怎么考虑搜索?对当前的猫来说,有当前开的缆车个数+新缆车几种选择 状态空间有哪些维度?当前用到的缆车个数,当前正在处理的猫的id 哪些可额能的减枝方式?(1)优化搜索顺序:从大到小;(2)最优性:> 阅读全文
posted @ 2023-05-05 17:10 zhangk1988 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 题目描述 给定一张 N 个点 M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量 f1-拓扑排序+状态压缩 基本分析 怎么梳理出统计的顺序?拓扑排序 怎么统计?按照拓扑序的逆序记录可达性 N在30000规模,怎么维护可达性?利用bitset进行状态压缩 代码 #include <iostr 阅读全文
posted @ 2023-05-05 16:25 zhangk1988 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 题目描述 给了一个单子数组words 给了字母前身的定义:A在任何地方加一个字符,凑成B,A就是B的前身 问从words中怎么选,能构成最长的词链? f1-记忆化搜索 基本分析 怎么找到子问题?假如s是词链的最后一个单词,那么枚举去掉s某位后的构成新的词s-1,s-1就是s的更小一级的子问题 dfs 阅读全文
posted @ 2023-04-27 20:22 zhangk1988 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 题目描述 矩阵中有两个岛屿 问岛之间的最小距离? f1- bsf + bfs 基本分析 怎么求第一个岛的所有点?找到第一个1后bfs 怎么保证不重复添加?入队的点设置为-1 怎么求到第二个岛的最小距离?第一个岛的所有点入队,遍历一轮step+1,遇到1的时候返回step 代码 class Solut 阅读全文
posted @ 2023-04-13 17:34 zhangk1988 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 题目描述 给了一个只包含0和1的字符串 现在有俩操作能选(1)把00换成10;(2)把10换成01 问怎么操作能得到最大的字符串? f1-找规律+贪心 基本分析 为啥会有10换成01的操作?1010-1001-1101,把第一个0后面的1都挪到最后面,变成多个1+多个0+多个1的组合。然后把多个1按 阅读全文
posted @ 2023-04-13 15:37 zhangk1988 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 题目描述 给了列表异或和的定义 现在的列表是arr1和arr2构造出来的,元素对是arr[i] and arr[j] 问以上列表的异或和? f1-依次确定答案的每一位 基本分析 为什么考虑计算答案的每一位?表达式只包含位运算(按位与 和按位异或) 具体怎么计算?要知道答案的第k为是1还是0->分别计 阅读全文
posted @ 2023-04-13 14:37 zhangk1988 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 题目描述 一个盒子有四种属性,能否打开、糖果数、钥匙、内含盒子 给你初始盒子的索引,问能拿到多少糖果? f1-模拟 + bfs 基本分析 一个索引需要有哪些状态?能不能打开;是不是有了这个盒子;这个盒子打开过没有? 怎么定义这些状态?数组 bfs的规则? (1)最初入队?如果盒子能打开,把盒子入队( 阅读全文
posted @ 2023-04-12 20:30 zhangk1988 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 题目描述 n个顶点构成了无向树 顶点编号从1到n 给了跳跃规则(1)跳相临边(2)不往回跳(3)多个选择概率相同(4)叶子结点时候就停下来 问t秒后跳到目标顶点target上的概率? f1-dfs 基本分析 怎么保证不往回跳?dfs时候传入父节点参数 dfs怎么定义?当前在x,父节点是fa,步数是s 阅读全文
posted @ 2023-04-12 16:45 zhangk1988 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 题目描述 给一个整数数组 问怎么选数字,可以让能得到的结果最大,同时这个接结果需要是3的倍数? f1 分类讨论+ 贪心 基本分析 怎么判断能不能被3整除?和 % 3 == 0 怎么判断该从数组中删掉哪些数字?(1)和%3==1, 删最小的余1的数字,不行删俩最小的余2的数字;(2)和% 3 == 2 阅读全文
posted @ 2023-04-10 17:54 zhangk1988 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 题目描述 给了一个正整数k,表示长度是k的所有回文数字 再给了和很多q,问第q小的数字是多少? f1 数学关系+构造 基本分析 从q之间的相互关系考虑还是单独考虑某个q和结果的关系?后者 长度是k的回文数字有啥特性?前一半数字是固定的,half = k + 1 >> 2, str[num][:hal 阅读全文
posted @ 2023-04-09 09:56 zhangk1988 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 题目描述 给了一个字符串,只有* 和 | ,分别表示盘子和蜡烛 再给了很多查询,对某个查询[x, y],问在区间内的且在蜡烛之间的盘子的个数? f1-预处理+前缀和 基本分析 1个字符多个查询可以考虑什么?预处理 对每个查询x,y需要知道什么?索引>=x的最近的盘子位置;索引<=y的最近的盘子的位置 阅读全文
posted @ 2023-04-07 17:20 zhangk1988 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 题目描述 给了一个二维矩阵,矩阵的元素不是0就是1 你可以进行任意次操作,让某行或者某列进行翻转 元素的得分是每一行二进制的和 问怎么操作可以让总得分最大? f1 贪心+计算增量 基本分析 为啥可以贪心?(1)对每行来说,首位肯定是1最好,遮掩某些行需要翻转,某些不翻;(2)对同一列来说,大家的优先 阅读全文
posted @ 2023-04-06 20:43 zhangk1988 阅读(9) 评论(0) 推荐(0) 编辑