lc1690_石子游戏 VII 【TED演讲】相信自己的三步指南 判断磁盘是ssd还是hdd Execl表格数据和Readme格式互换,以及execl对比底色区分
Algorithm
lc1690_石子游戏 VII
思路:
这题示例一比较友好,告知了不能简单地让两人每轮都最大得分贪心。
Bob贪心应该是自己拿什么,能让Alice下一轮的贪心拿得更少。
Alice的贪心应该是自己拿什么,让Bob下一轮拿什么都能获得最大差值。
每轮贪心也不一定是最优的吧?能拿到全局最优吗?
25分钟还没想出来,还是看 题解学习一下,提高效率。
题解通过记忆DFS来保证局部最优构造成全局最优,学习之。
题解描述先手用Bob描述的,但是这里其实还是Alice先手,最终返回dfs最大差值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
class Solution {
public:
int stoneGameVII(vector<int>& stones) {
int n = stones.size();
vector<int> sum(n + 1);
vector<vector<int>> memo(n, vector<int>(n, 0));
for (int i = 0; i < n; i++) {
sum[i + 1] = sum[i] + stones[i];
}
function<int(int, int)> dfs = [&](int i, int j) -> int {
if (i >= j) {
return 0;
}
if (memo[i][j] != 0) {
return memo[i][j];
}
int res = max(sum[j + 1] - sum[i + 1] - dfs(i + 1, j), sum[j] - sum[i] - dfs(i, j - 1));
memo[i][j] = res;
return res;
};
return dfs(0, n - 1);
}
};
|
记忆搜索DFS总是能转成dp的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
class Solution {
public:
int stoneGameVII(vector<int>& stones) {
int n = stones.size();
vector<int> sum(n + 1);
vector<vector<int>> dp(n, vector<int>(n, 0));
for (int i = 0; i < n; i++) {
sum[i + 1] = sum[i] + stones[i];
}
for (int i = n - 2; i >= 0; i--) {
for (int j = i + 1; j < n; j++) {
dp[i][j] = max(sum[j + 1] - sum[i + 1] - dp[i + 1][j], sum[j] - sum[i] - dp[i][j - 1]);
}
}
return dp[0][n - 1];
}
};
|
Review
【TED演讲】相信自己的三步指南
这文化很美国,自信主义,而不是人生机会主义。
不过自信的人确实更容易抓住机会。
如果没有找到自己一生的事业,那就不断尝试;如果找到了,那就不断努力;相信自己也能创造一些让世界更美好的事物。
永远相信自己,爱自己,永远不放弃自己。
Tips
判断磁盘是ssd还是hdd
有可转显示为1的是hdd,没有可转显示的是ssd。
1
2
3
4
5
|
# cat /sys/block/sda/queue/rotational
1
# cat /sys/block/nvme0n1/queue/rotational
0
|
Share
Execl表格数据和Readme格式互换,以及execl对比底色区分
Execl表格数据和Readme格式互换
Readme格式的表格可以直接用预览工具获得表格,然后复制粘贴到 Excel 即可。
而Execl复制到 Readme 文档的数据有 tab。
可以通过 vim 来做替换。
就是选中对应的行 :'<,'>s/\t/ | /g
替换一下即可。
这里的技巧是全部复制完,然后再替换,结合 .
来复制各个行.
execl对比底色区分
execl里面可以把结果改成百分比格式,然后再选中所有数据项中设置条件格式,创建下面2个条件格式
=C6 > 0
正数为绿色,=C6 < 0
负数为红色。
注意
C6
为表格中要对比的数据中的一个。
- 选中数据需要按ctrl多选中几行。因为规则是只对选中的地方生效。而且无法格式刷复制到其他地方。