88
99** 取数组当中的一个值,一般取第一个值,先做处理再进行递归**
1010
11- ![ image-20230711194047843] ( https://img-blog.csdnimg .cn/7871cdf30c6b48839d7bbc1ace541f85 .png )
11+ ![ image-20230711194047843] ( https://image.davidingplus .cn/images/2025/02/02/image-20230711194047843 .png )
1212
1313** 分治的思想** :取一个分界点,进行一个轮次的查找使得分界点左边的数均小于x,右边的数均大于x;然后对左边和右边的区间分别进行递归即可
1414
1515具体而言:
1616
17- ![ image-20230711204623490] ( https://img-blog.csdnimg .cn/8cbca9858f6a4f4588e58f5fe70c151c .png )
17+ ![ image-20230711204623490] ( https://image.davidingplus .cn/images/2025/02/02/image-20230711204623490 .png )
1818
19- ![ image-20230711204636198] ( https://img-blog.csdnimg .cn/5f6adb3a3bac4470b9bafc96f001ba58 .png )
19+ ![ image-20230711204636198] ( https://image.davidingplus .cn/images/2025/02/02/image-20230711204636198 .png )
2020
21- ![ image-20230711204656505] ( https://img-blog.csdnimg .cn/836b65f333ec40ccb882aca60c6b44d8 .png )
21+ ![ image-20230711204656505] ( https://image.davidingplus .cn/images/2025/02/02/image-20230711204656505 .png )
2222
2323** 注意:取左侧作为标兵那么一定是右侧先移动,然后最后将右侧的位置和标兵进行交换!!!!**
2424
@@ -67,7 +67,7 @@ void quick_sort(int arr[], int left, int right) {
6767
6868采用双指针算法进行合并
6969
70- 
70+ 
7171
7272**两根指针分别指向两个数组起始和结束的位置,然后依次比较两个指针,如果升序,哪个小就把哪个放入后面的数组然后后移,然后再次进行比较,直到一方到达末尾,这个时候把另一个的数组填入即可**
7373
@@ -117,7 +117,7 @@ void merge_sort(int array[], int left, int right) {
117117
118118第k个数
119119
120- <img src =" https://img-blog.csdnimg .cn/10bca92ff31c474f94c89d78fb20354f .png " alt =" image-20230715161200778 " style =" zoom :67% ;" />
120+ <img src =" https://image.davidingplus .cn/images/2025/02/02/image-20230715161200778 .png " alt =" image-20230715161200778 " style =" zoom :67% ;" />
121121
122122~~~ cpp
123123
@@ -131,11 +131,11 @@ void merge_sort(int array[], int left, int right) {
131131
132132#### 两个模板:
133133
134- ![ image-20230713165547136] ( https://img-blog.csdnimg .cn/4831ba311c6b4787928399463f200448 .png )
134+ ![ image-20230713165547136] ( https://image.davidingplus .cn/images/2025/02/02/image-20230713165547136 .png )
135135
136136#### 例题
137137
138- <img src =" https://img-blog.csdnimg .cn/8c501b1d70a04842932775887326b773 .png " alt =" image-20230713175850386 " style =" zoom :80% ;" />
138+ <img src =" https://image.davidingplus .cn/images/2025/02/02/image-20230713175850386 .png " alt =" image-20230713175850386 " style =" zoom :80% ;" />
139139
140140``` c++
141141#include < iostream>
@@ -205,7 +205,7 @@ int main() {
205205}
206206```
207207
208- <img src="https://img-blog.csdnimg .cn/bce8dcbe306b4e8a95cb95200df9b62d .png" alt="image-20230713183605769" style="zoom: 67%;" />
208+ <img src="https://image.davidingplus .cn/images/2025/02/02/image-20230713183605769 .png" alt="image-20230713183605769" style="zoom: 67%;" />
209209
210210```c++
211211#include <iostream>
@@ -252,11 +252,11 @@ int main() {
252252
253253** A的位数是10的6次方(可以看出超级大了)**
254254
255- ![ image-20230714155419310] ( https://img-blog.csdnimg .cn/f7bc4c30abab4b51b0429ad703c85c83 .png )
255+ ![ image-20230714155419310] ( https://image.davidingplus .cn/images/2025/02/02/image-20230714155419310 .png )
256256
257257##### 存储方法
258258
259- ![ image-20230714155943611] ( https://img-blog.csdnimg .cn/1bf898321985474e82512b5250af3ad6 .png )
259+ ![ image-20230714155943611] ( https://image.davidingplus .cn/images/2025/02/02/image-20230714155943611 .png )
260260
261261比如有一个数123456789,我们把每一位放到数组当中,从低位开始往后放
262262
@@ -495,7 +495,7 @@ int main() {
495495
496496** 与一般的思路不同,这个是把位数小的数放在前面!!!(因为我们也只能让小的数和大的数的每一位相乘!!!)**
497497
498- <img src =" https://img-blog.csdnimg .cn/ba6560f1e4a94079bf51e7bd46219ddd.png " alt =" 6bd3078974047cfc651144c0787f894 " style =" zoom : 50% ;" />
498+ <img src =" https://image.davidingplus .cn/images/2025/02/02/6bd3078974047cfc651144c0787f894.jpg " alt =" 6bd3078974047cfc651144c0787f894 " style =" zoom : 50% ;" />
499499
500500模板
501501
@@ -533,7 +533,7 @@ vector<int> mul(const vector<int>& A, const int& b) {
533533
534534思路:就按照一般的除法走就完了
535535
536- <img src="https://img-blog.csdnimg .cn/72bf9f90eea4407687f6e7b6c206c4b9 .png" alt="image-20230714203250061" style="zoom:67%;" />
536+ <img src="https://image.davidingplus .cn/images/2025/02/02/image-20230714203250061 .png" alt="image-20230714203250061" style="zoom:67%;" />
537537
538538模板
539539
@@ -624,11 +624,11 @@ int main() {
624624
625625** 计算 1 到 n 的和,公式就是 Sn-S0,这样就做到了统一!!!(处理边界)**
626626
627- ![ image-20230714211457962] ( https://img-blog.csdnimg .cn/dc3c39faf4ed4495b4b67a9908369bd8 .png )
627+ ![ image-20230714211457962] ( https://image.davidingplus .cn/images/2025/02/02/image-20230714211457962 .png )
628628
629629前缀和例题
630630
631- <img src =" https://img-blog.csdnimg .cn/56a72e20d4bf470d89c789ffb62f07ac .png " alt =" image-20230714213457166 " style =" zoom :67% ;" />
631+ <img src =" https://image.davidingplus .cn/images/2025/02/02/image-20230714213457166 .png " alt =" image-20230714213457166 " style =" zoom :67% ;" />
632632
633633代码:
634634
@@ -692,11 +692,11 @@ ios::sync_with_stdio(false);
692692
693693例题2
694694
695- <img src =" https://img-blog.csdnimg .cn/772573018b6446639d537cfaeac602ca .png " alt =" image-20230714214355261 " style =" zoom :67% ;" />
695+ <img src =" https://image.davidingplus .cn/images/2025/02/02/image-20230714214355261 .png " alt =" image-20230714214355261 " style =" zoom :67% ;" />
696696
697697动态递归的思路:(自己画个图就明白了)
698698
699- <img src =" https://img-blog.csdnimg .cn/d349a94d55f34f6bbe98e73ae1015dcc .png " alt =" image-20230714214717118 " style =" zoom : 50% ;" />
699+ <img src =" https://image.davidingplus .cn/images/2025/02/02/image-20230714214717118 .png " alt =" image-20230714214717118 " style =" zoom : 50% ;" />
700700
701701~~~ cpp
702702#include < iostream>
@@ -732,7 +732,7 @@ int main() {
732732
733733b数组称为a数组的差分,a数组称为b数组的前缀和
734734
735- <img src =" https://img-blog.csdnimg .cn/f1cd025c5a7d43eba8b8fb6cb82a9c5f .png " alt =" image-20230714221348016 " style =" zoom :67% ;" />
735+ <img src =" https://image.davidingplus .cn/images/2025/02/02/image-20230714221348016 .png " alt =" image-20230714221348016 " style =" zoom :67% ;" />
736736
737737** 差分的作用:可以用O(1)的时间复杂度将数组当中某个区间的所有数加上某个值**
738738
@@ -744,11 +744,11 @@ b数组称为a数组的差分,a数组称为b数组的前缀和
744744
745745** 因此,l到r区间当中的前缀和全部加了c**
746746
747- ![ image-20230714221736276] ( https://img-blog.csdnimg .cn/a61b108fa4644648895eabb9e821c9bd .png )
747+ ![ image-20230714221736276] ( https://image.davidingplus .cn/images/2025/02/02/image-20230714221736276 .png )
748748
749749例题
750750
751- <img src =" https://img-blog.csdnimg .cn/b0464674af6140ed9d46cc9523315b8f .png " alt =" image-20230714222044152 " style =" zoom :67% ;" />
751+ <img src =" https://image.davidingplus .cn/images/2025/02/02/image-20230714222044152 .png " alt =" image-20230714222044152 " style =" zoom :67% ;" />
752752
753753代码
754754
@@ -793,7 +793,7 @@ int main() {
793793
794794二维差分
795795
796- <img src =" https://img-blog.csdnimg .cn/93fe5f7aaa4947c9a20f32c6c5da2afb .png " alt =" image-20230715153441758 " style =" zoom :67% ;" />
796+ <img src =" https://image.davidingplus .cn/images/2025/02/02/image-20230715153441758 .png " alt =" image-20230715153441758 " style =" zoom :67% ;" />
797797
798798代码
799799
@@ -856,7 +856,7 @@ int main() {
856856
857857绝大部分的模板都是长这样的
858858
859- ![ image-20230715171200318] ( https://img-blog.csdnimg .cn/9b8417bf19c54c03b6f9e16274cf5860 .png )
859+ ![ image-20230715171200318] ( https://image.davidingplus .cn/images/2025/02/02/image-20230715171200318 .png )
860860
861861一个简单的例子
862862
@@ -902,7 +902,7 @@ int main() {
902902
903903#### 例题
904904
905- <img src =" https://img-blog.csdnimg .cn/91ebc848f4cb4ad2b216103348a47043 .png " alt =" image-20230715194453180 " />
905+ <img src =" https://image.davidingplus .cn/images/2025/02/02/image-20230715194453180 .png " alt =" image-20230715194453180 " />
906906
907907双指针的题一般都可以从暴力入手,然后再去着手优化
908908
@@ -1030,7 +1030,7 @@ n >> k && 1
10301030
10311031#### 例题
10321032
1033- <img src =" https://img-blog.csdnimg .cn/12c1472aa98849e5bc0a8fc413960a44 .png " alt =" image-20230715205834408 " style =" zoom :67% ;" />
1033+ <img src =" https://image.davidingplus .cn/images/2025/02/02/image-20230715205834408 .png " alt =" image-20230715205834408 " style =" zoom :67% ;" />
10341034
10351035这个题就是典型的lowbit操作的用法
10361036
@@ -1070,7 +1070,7 @@ int main() {
10701070
10711071值域非常大,我们把这些数映射到从0开始的有序自然数,这个过程就叫离散化
10721072
1073- 
1073+ 
10741074
10751075两个前提:**第一是整数;第二是保序,也就是数组是有序的**
10761076
@@ -1086,7 +1086,7 @@ alls.erase(unique(alls.begin(),alls.end()),alls.end());
10861086
10871087#### 例题(!!!)
10881088
1089- <img src =" https://img-blog.csdnimg .cn/8301ad730dd94bcc907ba2942efe926f .png " alt =" image-20230715212020778 " style =" zoom :67% ;" />
1089+ <img src =" https://image.davidingplus .cn/images/2025/02/02/image-20230715212020778 .png " alt =" image-20230715212020778 " style =" zoom :67% ;" />
10901090
10911091如果数的范围很小,那么可以用前缀和算法就可以很好的解决了
10921092
@@ -1203,15 +1203,15 @@ int main() {
12031203
12041204先把所有区间按照左端点的大小排序,然后从第一个区间开始,由于排了序,那么后面的区间的左端点只可能大于等于本区间,然后就可能出现三种情况如下:
12051205
1206- <img src="https://img-blog.csdnimg .cn/a5fc0fc4f9f3402b88134c2715bd3bc2 .png" alt="image-20230719163223755" style="zoom:67%;" />
1206+ <img src="https://image.davidingplus .cn/images/2025/02/02/image-20230719163223755 .png" alt="image-20230719163223755" style="zoom:67%;" />
12071207
12081208前面两个区间可以合并,然后更新为新的区间;第三种情况合并不了,由于经过了排序,那么第一个区间必然是最后合并区间的一个,那么将其记录下来,然后更新区间为后面的区间,直到所有的区间都判断完毕
12091209
1210- 
1210+ 
12111211
12121212例题:
12131213
1214- <img src="https://img-blog.csdnimg .cn/29a8d4fd973d418b8024866aaf4a66a7 .png" alt="image-20230719165718848" style="zoom:67%;" />
1214+ <img src="https://image.davidingplus .cn/images/2025/02/02/image-20230719165718848 .png" alt="image-20230719165718848" style="zoom:67%;" />
12151215
12161216代码:
12171217
@@ -1283,11 +1283,11 @@ int main() {
12831283
12841284用e[ N] 和ne[ N] 来表示结点的值和结点的后继结点的下标,空结点下标定义为-1
12851285
1286- ![ image-20230719170957832] ( https://img-blog.csdnimg .cn/edd39c085d7b4e13b5782b022264e145 .png )
1286+ ![ image-20230719170957832] ( https://image.davidingplus .cn/images/2025/02/02/image-20230719170957832 .png )
12871287
12881288##### 例题(!!!)
12891289
1290- <img src =" https://img-blog.csdnimg .cn/7c9c948362084a52afe7dbde2ea90010 .png " alt =" image-20230719171157485 " style =" zoom :67% ;" />
1290+ <img src =" https://image.davidingplus .cn/images/2025/02/02/image-20230719171157485 .png " alt =" image-20230719171157485 " style =" zoom :67% ;" />
12911291
12921292直接看代码吧,都在代码里了(真的很巧妙)
12931293
@@ -1377,7 +1377,7 @@ int main() {
13771377
13781378##### 例题
13791379
1380- <img src="https://img-blog.csdnimg .cn/229d3ba0dd6f414c9daabc6345859cab .png" alt="image-20230719211659529" />
1380+ <img src="https://image.davidingplus .cn/images/2025/02/02/image-20230719211659529 .png" alt="image-20230719211659529" />
13811381
13821382**思路差不多,但是这里借用数组的0和1序号来代表head和tail,idx从2开始!!!**
13831383
@@ -1478,7 +1478,7 @@ int main() {
14781478
14791479stack
14801480
1481- <img src =" https://img-blog.csdnimg .cn/2b501b71a28945199896e603ff91cb28 .png " alt =" image-20230719212205557 " style =" zoom : 80% ;" />
1481+ <img src =" https://image.davidingplus .cn/images/2025/02/02/image-20230719212205557 .png " alt =" image-20230719212205557 " style =" zoom : 80% ;" />
14821482
14831483~~~ cpp
14841484#include < iostream>
@@ -1552,7 +1552,7 @@ int main() {
15521552
15531553queue
15541554
1555- <img src =" https://img-blog.csdnimg .cn/0253b43f649f449b97b349f455e33667 .png " alt =" image-20230719213226149 " style =" zoom :80% ;" />
1555+ <img src =" https://image.davidingplus .cn/images/2025/02/02/image-20230719213226149 .png " alt =" image-20230719213226149 " style =" zoom :80% ;" />
15561556
15571557~~~ cpp
15581558#include < iostream>
@@ -1632,7 +1632,7 @@ int main() {
16321632
16331633#### 例题
16341634
1635- <img src="https://img-blog.csdnimg .cn/d338503579f246a087265ba6e04c2555 .png" alt="image-20230719220816068" style="zoom:80%;" />
1635+ <img src="https://image.davidingplus .cn/images/2025/02/02/image-20230719220816068 .png" alt="image-20230719220816068" style="zoom:80%;" />
16361636
16371637代码:
16381638
@@ -1726,7 +1726,7 @@ int main() {
17261726
17271727#### 例题
17281728
1729- ![ image-20230719221813851] ( https://img-blog.csdnimg .cn/421be669d6944e75a6ddcbb01745faa8 .png )
1729+ ![ image-20230719221813851] ( https://image.davidingplus .cn/images/2025/02/02/image-20230719221813851 .png )
17301730
17311731代码还有一些问题,后续修改
17321732
0 commit comments