From a6463174fb022ea7d0b346fa2721a6b7a10b8f5a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com>
Date: Mon, 4 Mar 2024 11:11:09 +0800
Subject: [PATCH] 'commit'
---
TangDou/AcWing_TiGao/T1/LIS/1012.md | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/TangDou/AcWing_TiGao/T1/LIS/1012.md b/TangDou/AcWing_TiGao/T1/LIS/1012.md
index 9baf869..a38601c 100644
--- a/TangDou/AcWing_TiGao/T1/LIS/1012.md
+++ b/TangDou/AcWing_TiGao/T1/LIS/1012.md
@@ -54,7 +54,7 @@ $1≤N≤5000,0≤x_i≤10000$
#### 1、什么情况会交叉?
-什么情况会造成桥出现交叉呢?手动模拟可知:当两座桥对应的两对城市($(x_1,y_1),(x_2,y_2)$)出现了下面的情况:
+手动模拟可知:当两座桥对应的两对城市($(x_1,y_1),(x_2,y_2)$)出现了下面的情况:
$$
\large \left\{\begin{matrix}
@@ -72,14 +72,14 @@ $$
#### 2、暴力怎么做?
* 如果按照暴力的思路去思考的话,因为每座桥都可以选择建或者不建两种情况,所以要枚举所有的可能性,需要枚举的次数为$2^N$,其中$N≤5000$,肯定会$TLE$啊,需要优化。
-* 如果暴力,需要枚举每一个城市,那么枚举序是什么呢?城市编号吗?**~~开什么玩笑,题目根本也没有给你城市编号,你也不知道城市编号啊,而且这玩意也没用啊,你创造一个新概念出来给自己找罪受吗?~~~**,那题目中给了啥东西?**友好城市的坐标**!,那你要枚举坐标,**是不是得排个序,从小到大讨论**?
+* 如果暴力,需要枚举每一个**友好城市的坐标**!,既然要枚举坐标,**是不是得排个序,从小到大讨论**,要不逆序不逆序怎么判断?
当你想到需要把一端坐标从小到大排序时,就马上会想到,那另一端怎么办?对应关系不能丢失啊,所以,需要使用`pair`进行处理。
到这,似乎快看到曙光: 一端顺序由小到大,讨论另一端,怎么样才能让在没有交叉的情况下桥的数量还最多呢?当然是升序的序列越长越好,转化为求$LIS$问题了!
#### 3、总结
-* 多个数对的问题,套路是:对数对的第一维的自变量进行排序,然后再处理第二维的因变量,这样操作,可以起到类似于 降维 的作用,使问题简化。
+* 多个数对的问题,套路:对数对的第一维排序,再处理第二维。这样操作,可以起到类似于 降维 的作用,使问题简化。
* 本题还是有一些思维的难度,需要对问题进行转化。用 **数对** 描述问题比较好想,为什么要按左端点进行排序呢?似乎对于数对而言,大多数情况需要固定一个端点,比如[区间合并](https://www.cnblogs.com/littlehb/p/15242447.html),如果我们能想到这是一个用数对描述的问题,不妨先想一下是不是在按左端点排序一下。
@@ -148,4 +148,10 @@ int main() {
printf("%d\n", fl);
return 0;
}
-```
\ No newline at end of file
+```
+
+### 五、关键字
+- 转化模型
+- 数对
+- 排序 (第一维)
+- $LIS$ (第二维)
\ No newline at end of file