「Learn Haskell」#2 高阶函数与模块
Higher Order Functions
Currying
Haskell中的函数是柯里化(Currying)的,可以看作所有函数都只接收一个参数,而接收两个参数的函数实际上是这个函数接收了第一个参数后返回了一个接收第二个参数的函数,然后用这个函数接收第二个参数,返回最终的结果。比如max函数,它的类型签名是:
Haskell中的函数是柯里化(Currying)的,可以看作所有函数都只接收一个参数,而接收两个参数的函数实际上是这个函数接收了第一个参数后返回了一个接收第二个参数的函数,然后用这个函数接收第二个参数,返回最终的结果。比如max函数,它的类型签名是:
学习一门新语言之Haskell
之前一直很好奇函数式编程,觉得Haskell挺有意思的,想学学
现在高考完放假了,可以有时间具体学一学了
这里没有Haskell的教程,只有我在学习Haskell时写下的笔记
在使用manim时,对于Text类,会有一些bug,我尝试修复了它们
shaders
分支下无法使用Text类ORIGIN
的位置,导致Transform
时会有字符在原位置和ORIGIN
之间 这些问题已经通过#1030修复到了manim的master分支中
通过SPOJ 10707 COT2-Count on a tree II这道题目来学习一下 树上莫队
当需要离线查询 树上 的多区间问题时,可以使用 树上莫队 来解决
主要通过 欧拉序 将树转化为一条链,然后在链上执行普通莫队的操作
通过AtCoder 1219 歴史の研究这道题目来学习一下 回滚莫队
回滚莫队 适用于容易进行add
操作,而不容易实现del
的情况
通过莫队的分块,指针移动的思想,可以让左指针进行回滚操作, 近似 达到del
的效果
通过Luogu P1903 数颜色/维护序列这道题目来学习一下 带修莫队
顾名思义,带修莫队 不仅要支持普通莫队的查询操作,还要支持数据中途的修改
比如这道题目,需要实现以下目标
达到这个目标,可以在普通莫队的基础上加一个时间维度,实现 带修莫队
这篇文章来记录一下莫队算法时间复杂度的简单(不严谨)计算
首先分析一下莫队算法的时间复杂度有哪些方面构成
Query
数组的排序问题编号 | 问题名称 | 问题模型 | 转化模型 |
---|---|---|---|
1 | 飞行员配对方案问题 | 二分图最大匹配 | 网络最大流 |
2 | 太空飞行计划问题 | 最大权闭合图 | 网络最小割 |
3 | 最小路径覆盖问题 | 有向无环图最小路径覆盖 | 网络最大流 |
4 | 魔术球问题 | 有向无环图最小路径覆盖 | 网络最大流 |
5 | 圆桌问题 | 二分图多重匹配 | 网络最大流 |
6 | 最长不下降子序列问题 | 最多不相交路径 | 网络最大流 |
7 | 试题库问题 | 二分图多重匹配 | 网络最大流 |
8 | 机器人路径规划问题 | $IDA*$ | $IDA*$ |
9 | 方格取数问题 | 二分图点权最大独立集 | 网络最小割 |
10 | 餐巾计划问题 | 线性规划网络优化 | 最小费用最大流 |
11 | 航空路线问题 | 最长不相交路径 | 最小费用最大流 |
12 | 软件补丁问题 | 最小转移代价 | 最短路径 |
13 | 星际转移问题 | 网络判定 | 网络最大流 |
14 | 孤岛营救问题 | 分层图最短路径 | 最短路径 |
15 | 汽车加油行驶问题 | 分层图最短路径 | 最短路径 |
16 | 数字梯形问题 | 最大权不相交路径 | 最小费用最大流 |
17 | 运输问题 | 网络费用流量 | 最小费用最大流 |
18 | 分配问题 | 二分图最佳匹配 | 最小费用最大流 |
19 | 负载平衡问题 | 最小代价供求 | 最小费用最大流 |
20 | 深海机器人问题 | 线性规划网络优化 | 最小费用最大流 |
21 | 最长k可重区间集问题 | 最大权不相交路径 | 最小费用最大流 |
22 | 最长k可重线段集问题 | 最大权不相交路径 | 最小费用最大流 |
23 | 火星探险问题 | 线性规划网络优化 | 最小费用最大流 |
24 | 骑士共存问题 | 二分图最大独立集 | 网络最小割 |
题目传送门: 「Luogu P1494」小Z的袜子
一道推公式,后使用莫队 玄学 优化的题目