1616. 分割两个字符串得到回文串;1717. 删除子字符串的最大得分;1605. 给定行和列的和求可行矩阵

1616. 分割两个字符串得到回文串

核心思想:思维题。如果直接枚举分割点明显超时了。那么有没有方法可以判断(a,b)两个字符串能否成功形成回文串呢,结果就是从a的前面枚举,b的后面枚举,直到不相同的时候,a,b剩余的公共部分为s[l:r]这部分,只要a,b字符串有一串s[l:r]这部分满足回文即可,因为你可以取a的前部分和b的后部分加上满足回文的这部分组成回文串,相当于一次切割。相当有技巧,其实看到题解可能很简单,但事实上不好想。

1616. 分割两个字符串得到回文串;1717. 删除子字符串的最大得分;1605. 给定行和列的和求可行矩阵_第1张图片

1717. 删除子字符串的最大得分

核心思想:一个结论,分出来的字串比如aabbaa不论你删除ab,还是ba,还是ab,ba混合删除,你的最大删除次数是不变的都是两次。所以我们优先删除分数多的,然后在删除分数少的,这部分使用栈来模拟,可以看一下代码注释。

1616. 分割两个字符串得到回文串;1717. 删除子字符串的最大得分;1605. 给定行和列的和求可行矩阵_第2张图片

1605. 给定行和列的和求可行矩阵

核心思想:一行一行填,填完后更新行和和列和,每个格子可取的值为行和和列和的最小值,借用一下灵神的图,旁边的数字就是行和,和列和,想当于一个模拟过程,蓝色问号就是待填写数字,旁边的黑色数字就是行和和列和,问号填两个值的小值,然后更新即可。

1616. 分割两个字符串得到回文串;1717. 删除子字符串的最大得分;1605. 给定行和列的和求可行矩阵_第3张图片

1616. 分割两个字符串得到回文串;1717. 删除子字符串的最大得分;1605. 给定行和列的和求可行矩阵_第4张图片

你可能感兴趣的:(python,算法)