1 | FileInput = False |
蓝桥-积木画
题目
https://www.lanqiao.cn/problems/2110/learning/
一
这是看的一个C++题解,因为一开始有一点点没想过来。但是内存超了。发现dp[i][1]和dp[i][2]是一样的,做一点改进。
二
但是,这个”请求超时,请稍后重试“。
蓝桥-DP练习
李白打酒加强版
https://www.lanqiao.cn/problems/2114/learning/
- 酒的减少量是一样的,都是m
开心的金明
https://www.lanqiao.cn/problems/554/learning/
代码1:
蓝桥-排列数
题目
https://www.lanqiao.cn/problems/240/learning/
方法一:暴力
方法二:DP
思路:
参考一下这篇文章,主要是它图,然后用我的理解重新说一下。
首先是状态的定义。dp[i][j]表示取1~i的数组成的j单调序列的数量。j单调序列,也就是说这个序列中有j个单调的区间,j-1个折点,
蓝桥-线性DP
最长公共子序列
dp[i][j],A序列前i个和B序列的前j个的最长公共子序列。
最长递增序列(蓝桥骑士)
题目:
https://www.lanqiao.cn/problems/1188/learning/
DP代码(超时)
二分代码
蓝桥-多重背包
蓝桥-2022
问题
https://www.lanqiao.cn/problems/2186/learning/
代码
将题目转为0/1背包问题:
容量2022的包,编号1到2022的物体大小就是编号,取10个使得刚好装满的方案数。
我不好理解的是初始状态的设定。
滚动数组的做法:
蓝桥-小明的背包
蓝桥-剪邮票
题目
https://www.lanqiao.cn/problems/1505/learning/
代码
1 | # 03-剪邮票-1 |
蓝桥-全球变暖
题目
https://www.lanqiao.cn/problems/178/learning/
DFS
会栈溢出
1 | # 05-全球变暖1 |
BFS
1 | # 02-全球变暖-1 |
蓝桥-迷宫2019
题目
https://www.lanqiao.cn/problems/602/learning/
代码1
1 | # 01-迷宫2019-2 |
代码2
1 | # 01-迷宫2019-1 |
蓝桥-防御力
题目
https://www.lanqiao.cn/problems/226/learning/
思路
这其实是一道排序题,要让B从小到大排,A从大到小牌。
但是为什么呢?
让我来数学证明一下~
首先,规定一下符号。
和别的地方说的一样,容易说明,连续的增加A或B,顺序是不影响最后的结果的。假设连续增加A,那么$A_n=\log_2{(A_0+a_1+a_2+…)}$,改变顺序不影响$A_n$的值。所以只需要讨论A和B的增加量交替出现的时候如何选择了。
蓝桥-统计子矩阵
题目
https://www.lanqiao.cn/problems/2109/learning/
思路
思路并不难理解,要非常注意的是二维前缀和的区间计算的下标。
代码
上面是我的,用二维前缀和做的,下面是别人在计算前缀和的时候只对列上做了计算。
蓝桥-灵能传输
题目
https://www.lanqiao.cn/problems/196/learning/
思路
- 所有操作都是在数组内进行的,整个数组的和不变;
- 每次操作的三个数的和不变,因此考虑到用前缀和。
- 一次更新后,
s[i-1]变为原来的s[i],s[i]变为原来的s[i-1],s[i+1]不变; - 因此“一次加减操作”转变为“前两个前缀和的交换”。
- 两端的武士不向外传递灵能,但他们的灵能值也会改变,而
s[n]是所有的和,不变。因此,s[0]=0,s[1]到s[n-1]可以交换到任意位置。 - 要求的东西就变成了求
max{|s[i]-s[i-1|}尽量小。 - 先考虑简单情况,
s[]都是正的,将他排序,相邻差最大的就是结果,因为如果不排序,相邻相减会大; - https://blog.csdn.net/xuxiaobo1234/article/details/108095193
- 最后一步,我只能理解成:小于
s[0]大于min部分的值要排列起来,使得相邻两数的差最大值最小化,从图像上想象就是,s[0]固定住,s[1]到s[p](假设是这样的下标)升序排序,但都小于s[0],然后隔一个的将数拆开成两部分,一部分降序地排列在s[0]后面,然后另一部分更在后面,这样能“使得相邻两数的差最大值最小化”。
代码
1 | # 灵能传输 |
二分法.md
扫地机器人
题目:https://www.lanqiao.cn/problems/199/learning/
- 每个机器人“负责”的区域(包括他自己的)*2=他的时间
1 | # n, k = map(int, input().split()) |