10 2022 档案
摘要:题目描述 给一个整数的数组nums,数组中的元素不超过30,数组长度不超过$10^5$ 给出了好子集的定义(数组中所有元素成绩可以拆分为互不相同质数的积) 对好子集个数的要求是不同子集删除的下标不同,那么也被视为不同的子集 问给定数组nums的好子集的个数? f1-状态压缩+动态规划 基本分析 直观
阅读全文
摘要:题目描述 给了一个学生数组和老师数组,数组长度都是m 每个数组元素ei又是个数组,有k个元素,某个数组其中学生和老师的对应元素一样的个数定义为兼容性评分 问怎么匹配老师和学生的数组,让兼容性评分最大? f1-状态压缩+动态规格 基本分析 这种两个等长数组匹配的题目怎么考虑?因为可以换顺序,固定一个不
阅读全文
摘要:题目描述 给了两个数组nums1和nums2,长度都是n,问怎么排列可以让数组对应元素的异或值之和最小? f1-二进制枚举+状态压缩 基本分析 1.有没有是啥贪心做法,因为看到相同元素异或可以为0?用二进制枚举可以实现这里,还要考虑其他元素,没有啥思路 2.这里涉及到两个元素的排列,枚举需要枚举哪个
阅读全文
摘要:题目描述 有个店,每次出货量是b,且只有之前全卖完以后才继续出货 给了一个整数数组groups,元素ei是这一批顾客的人数,且每个人刚好只要一个 如果某批顾客的第一个顾客拿到的货是新出的,这批人就会开心 问怎么安排来着的顺序,尽量让开心的批次最大? f1-非2进制状态压缩+动态规划 基本分析 直白的
阅读全文
摘要:题目描述 给一个数组正整数nums,数组长度是2*n 规定需要对数组执行n次操作,每次操作从nums中拿出两个元素x和y,计算分数$i \cdot gcd(x,y)$ 问n次操作后的分数和最大是多少? f1-状态压缩+动态规划 基本分析 有没有贪心的可能?没有啥思路 如果考虑用dp实现,怎么定义状态
阅读全文
摘要:题目描述 给一个整数数组nums,数组长度在40以下 再给一个目标值goal 问怎么能在数组中选一个子序列,让子序列的和最接近值goal? f1-折半+状态压缩+动态规划 基本分析 1.40这个长度怎么看,直接用状态压缩行不行?子集个数是$O(2^n)$, 每个子集需要O(n)去找一个子集中的非0元
阅读全文
摘要:题目描述 给了一个整数数组jobs表示工作,元素ei表示第i个工作需要花费的时间 给k个人,每个工作都需要分配,且每个只能给一个人 问如果要完成所有工作,求最短的工作时间? f1-状态压缩+动态规划 基本分析 能看出来需要二进制压缩状态,这里n是工作量,k是人数,怎么定义dp定义好?因为给第i个人的
阅读全文
摘要:题目描述 给一个数组nums,数组里面有一些值,值可能会重复 再给一个k,需要把nums分配到k个子集中,每个子集没有相同元素,且所有子集的不兼容性之和最小? f1-枚举子集+状态压缩+动态规划 基本分析 明显不满足要求的有哪些?某个值的次数>k 是不是存在贪心的思路?没有 因为需要给每个子集放n/
阅读全文
摘要:题目描述 f1-记忆化搜索+轮廓线状态压缩 基本分析 轮廓线状态压缩的场景?在一个二维矩阵上进行动态规划+数据规模不大+可以通过当前位置与其左上方位置+左侧位置计算转移方程 为什么存n个状态而不是相关的2个状态?只存2个会丢状态,新的0找不到了;存n个可以递推出 具体怎么计算得分?新加人产生的分可分
阅读全文
摘要:题目描述 给了一个数组nums,数组中最多有50个不同的值 再给了m个顾客的订单数组,数组元素ei的含义是第i个顾客需要有ei个相同的整数 问给的nums能不能满足以上所有顾客的要求? f1-状态压缩+dp 基本分析 人数m不超过10?用二进制表示能满足人的子集 具体地取哪些数字重要吗?值不重要,值
阅读全文
摘要:题目描述 给一个数组nums,需要把他换分为两个连续的子数组,要求是两个子数组非空,且左边的每个元素都小于等于右边每个元素,左边数组长度尽可能小 求left的长度 f1-模拟+2次遍历 基本分析 题目直白的翻译是啥?能不能找到一个靠左的点,让左子数组的最大值<=右子数组的最小值? 怎么知道靠右边区间
阅读全文
摘要:题目描述 有n个城市,编号是1-n, 给了一个数组edges表示了城市的连接关系,且每个城市间最多只有一条路(城市间的连接是树), 需要求一个结果ans,其中ans[i]表示城市间最大距离是i+1子树的数目 f1-状态压缩+动态规划 基本分析 城市个数不超过15可以暗示什么?用二进制表示当前城市的选
阅读全文
摘要:题目描述 给一个列表hats,元素hats[i]表示第i个人喜欢的帽子类型 需要你给每个人都带自己喜欢颜色的帽子,同时不能和其他人一样 求方案数量 提示: 帽子个数不大于40 人数不大于8 f1-状态压缩+动态规划 基本分析 这里帽子个数不大于40,人数不大于8,考虑是帽子找人还是人找帽子?人少,肯
阅读全文
摘要:题目描述 给一个m*n的矩阵seats表示教室内座位的分布,如果是坏的用“#”表示不能坐人 同时为了避免作弊,学生左,右,左前,右前4个位置不能有人 求给定座位后,最多能坐多少个学生? 提示: 1<=m<=8 1<=n<=8 f1-动态规划+状态压缩 基本分析 每一行坐人的状态怎么表示?参考给的数据
阅读全文
摘要:题目描述 给一个单词表words, 一个字母表letters 当用letters中的字母可以拼出words中的某个单词时,可以获得得分, 得分是按照字母来算的,每个字母得分在score数组中 提示: 单词表长度不大于14 words和letters中只包含小写字母 words中每个单词只能使用一次
阅读全文
摘要:题目描述 你规划了一个技能清单skills,准备从备选人员中选择, 给了一个人员名单列表people,其中元素people[i]表示第i个人具备的技能。 提示: skills中的元素互不相同 people[i]中的技能都在skills范围内 技能列表长满足 1到16 f1-记忆化搜索+状态压缩 基本
阅读全文
摘要:题目描述 给一个非递顺序排列的数组数组,可以用任意次数组中的元素来写数字, 问能生生成的<=给定整数n的个数? 其中数组中的值都不同,数组长度在1-9之间。 基本分析 这是啥类型的题?之前没有遇到过,经典的数位dp的题 涉及到任意区间合法数查询时考虑怎么做,这个题有啥简化的地方? 可以假定存在函数d
阅读全文
摘要:题目描述 给了一个无向联通图,图中节点个数是n,编号从0-n-1, 问能访问所有节点的最短路径长度是多少?可以从任一节点开始和停止,可多次访问节点,可重用边。 ####f1-bfs+状态压缩 基本分析 节点的个数不超过12,暗示什么?可能对节点的访问状态进行二进制压缩 每条边长度是1,求最短路径可以
阅读全文
摘要:题目描述 给一个列表ss,里面存的是不同的单词贴纸,单词只包含小写字母,可以把贴纸内的每个字母单独切割, 给一个目标t,当不限制每个贴纸使用次数时,问要拼出目标t需要的最小贴纸数? ####f1-朴素动态规划+状态压缩 基本分析 看到t的长度不会超过15,想到怎么表达t的凑成状态?用s表示t的凑成状
阅读全文
摘要:题目描述 给一个数组nums,nums中元素代表火柴棒的长度。 给的要求是火柴棒可以连接,不能折断,每根必须用一次,问能不能连成正方形? 基本分析 f1-状态压缩+动态规划 火柴数组长度不超过15暗示什么?可以用二进制数s表示数组中索引对应的火柴的使用情况 火柴数组什么情况可以提前排除?(1)长度总
阅读全文
摘要:题目描述 给个一个数字n,表示有1-n的n个数,需要用这些数构造一个优美数组,数组下标从1开始 其中优美数组的定义:假设索引为i,i处的值是x,需要满足i%x==0 或者 x%i==0 问能构造的优美数组的数量? 基本分析 朴素做法: 题目中给出的n很小,最大不超过15,暗示了哪些可能方法?回溯或者
阅读全文
摘要:题目描述 给了一个m x n的矩阵,矩阵左上点坐标是(0,0),右下角是(m-1,n-1),再给了一个不大的整数k 你从起点出发,每一步只能向下或者向右走,问到达终点的且路径和能被k整除的路径数目? 基本分析 这里只能往下往右,暗示了什么?可能是dp 如果直接定义dp[i][j]表示从左上走到(i,
阅读全文
摘要:题目描述 给了两个整型数组nums1和nums2,数组长度相等且不为空,定义了一个操作:可以交换两个数组中同索引的元素 如果要使nums1和nums2严格递增,问最小的操作次数?(用例保证可以实现操作) 基本分析 严格递增的定义?不包含等号 什么情况下需要交换?是不是两个数组中有一个会碰到一个逆序的
阅读全文
摘要:题目描述 给了一个初始字符串s,一个机器人,并且机器人当前有一个字符串t。 可以有两个操作: 删除s的第一个字符,添加到t的结尾 删除t的最后一个字符,将字符写到纸上 问纸上能获取到字典序最小的字符串? 基本分析 两个操作对应的是什么? 将t看做一个栈,操作1代表入栈,操作2对应出栈 直观上感觉使用
阅读全文
摘要:题目描述 给了两个数组nums1和nums2,给了相对优势的定义:nums1[i] > nums2[2]的索引i的数目 希望能返回nums1的任意排列,使得相对于nums2的优势最大化 基本分析 直觉上看需要用到贪心,类似于田忌赛马。把nums1从小到大排列,取出当前最小x,去和nums2当前的最小
阅读全文