上一页 1 2 3 4 5 6 7 ··· 10 下一页
摘要: 给定非负整数数组A[n],返回A的不同排列数目,使用数组每对相邻元素之和是一个完全平方数。 1<=n<=12; 0<=A[i]<=1e9 状压dp,记dp[st][i]表示已选择数的状态为st,并且最后选择数的下标为i的方案数,对于某个状态st,枚举最后选择的数i是哪个,以及上一个最后选择的数j是哪 阅读全文
posted @ 2024-03-23 12:11 chenfy27 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 给出一张由n个点m条边组成的无向图,求所有点对(i,j)之间的最短路。 n<=100; m<=4500; 1<=w<=1000 多源最短路模板题,注意循环顺序是kij,另外可能会有重边,因此两点之间的距离要初始化为inf,读入边权时取最小值。 #include <bits/stdc++.h> usi 阅读全文
posted @ 2024-03-23 11:14 chenfy27 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 给定正整数数组nums[n]和一个整数k,返回nums中好子数组的数目。如果nums的某个连续子数组中不同的整数个数恰好为k,则称其为好数组。 1<=n<=2e4; 1<=nums[i],k<=n 先将问题做下转化:恰好为k的个数 = 最多为k的个数 - 最多为k-1的个数。而最多为k的个数可以用双 阅读全文
posted @ 2024-03-22 22:48 chenfy27 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 给定正整数数组nums[n],将数组分割成1个或多个连续子数组,如果不存在包含了相同数字的两个子数组,则认为是一种好分割方案,求好分割方案的数目,结果对1000000007取模。 1<=n<=1e5; 1<=nums[i]<=1e9 相同的数字只能分到同一个子数组,转化成区间合并问题。然后枚举每个可 阅读全文
posted @ 2024-03-21 22:37 chenfy27 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 有一根长度为n的木棍,从0到n标记了若干个位置。给定一个数组cuts[m],表示要在cuts[i]位置切开,每次切割的成本是当前木棍的长度,求总成本的最小值。 2<=n<=1e6; 1<=m<=min(n-1,100); 1<=cuts[i]<=n-1; cuts[i]各不相同 正向思考的话可以记忆 阅读全文
posted @ 2024-03-21 22:09 chenfy27 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 给定长为n的字符串s,每次操作可以在字符串的任意位置插入任意1个字符,如果要让s成为回文串,至少要操作多少次? 1<=n<=500 区间dp,记dp[i][j]表示让[i,j]区间成为回文串的最少操作次数,考虑s[i]与s[j]的相等关系进行转移。 class Solution { public: 阅读全文
posted @ 2024-03-21 21:34 chenfy27 阅读(4) 评论(0) 推荐(0) 编辑
摘要: A从1到n之间选择一个数字让B来猜,假设B猜数字x,如果猜对,直接结束;否则B需要支付金额x,然后A告诉B小了或者大了并继续猜。给定数字n,问能确保获胜的最小现金,无论A选择哪个数字。 1<=n<=200 区间dp,记dp[i][j]表示区间为[i,j]时获胜所需的最小现金,枚举每次猜的数字k,考虑 阅读全文
posted @ 2024-03-21 21:28 chenfy27 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 给出两个字符串word1和word2,需要从word1和word2分别选出某个非空子序列s1和s2,要求连接s1与s2后得到回文串,求该回文串的最大长度。 word1和word2长度在[1,1000]内。 区间dp,将word1与word2拼接起来,转换成求单个字符串的的最长回文子序列问题,为了保证 阅读全文
posted @ 2024-03-21 21:04 chenfy27 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 给定长度为n的字符串s,求最长回文子序列的长度。 1<=n<=1000 区间dp,记dp[i][j]表示区间[i,j]能构成的最长回文串的长度,根据s[i]跟s[j]是否相等进行转移。 class Solution { public: int dp[1005][1005]; int longestP 阅读全文
posted @ 2024-03-21 20:50 chenfy27 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 给定数组nums[n],定义f(arr,val)表示数组arr中大于val的元素个数,需要操作n次将nums分配到两个数组里,具体如下: 第1次操作将nums[1]追加到arr1,第2次操作将nums[2]追加到arr2 后续第i次操作: 如果f(arr1,nums[i]) > f(arr2,num 阅读全文
posted @ 2024-03-20 21:36 chenfy27 阅读(11) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 10 下一页