【题集总览】题集1:Aoapc2 ch8 高效算法设计 内容题(完结总结)

题集内容

aoapc2的第八章,知识点后附的简单例题。
主要目的是为了及时打出学到的东西。

习题

  • [x] 洛谷P1115 最大连续子段和
  • [x] 洛谷P1908 逆序对
  • [x] 快速排序算法
  • [x] 二分查找:单个元素,上下界算法
  • [x] aoapc-ch8 循环日程表问题
  • [x] aoapc-ch8 棋盘覆盖问题
  • [x] UVa1411 巨人与鬼
  • [x] 背包相关问题
    • 最优装载问题
    • 部分背包问题
    • 乘船问题(NYOJ71)
  • [x] 区间相关问题
    • 选择不相交区间(hdu2037)
    • 区间选点
    • 区间覆盖
  • [-] Huffman编码算法 (本身较复杂,理解思想即可)



8.1算法分析初步

本节主要为三种实现最大连续和问题的算法,及其时间复杂度。
1.暴力。

best = A[1];
for (int i = 0; i<=n; i++)
    for (int j = 0; j<=n; j++){
        int sum = 0;
        for (int k = 0; k<=j; k++) sum+=A[k];
        if (sum > best) best = sum;
    }

O(n3) O ( n 3 )


2.前缀和打表暴力。应注意前缀和在求序列和问题中的应用。

S[0] = 0;
for (int i = 1; i<=n; i++) S[i] = S[i-1] + A[i];
for (int i = 1; i<=n; i++)
    for (int j = 1; j<=n; j++)
        best = max(best, S[j]-S[i-1]);

O(n2) O ( n 2 )


3.分治法。
LP1118

分治用法1:部分可得最优解的情况。分治之,分别计算两半的最优解以及合并部分的最优解,最后在这三个解里面优上加优。

对于算法分析结果的判断。
这里写图片描述

8.2再谈排序与检索

分治用法2:分别对两半进行操作,最后整合操作。
归并排序:先两半,后整合。
快速排序:先整合,后两半。

1.归并排序:
这里写图片描述

void merge_sort(int* A, int x, int y, int* T){
 if(y-x > 1){
  int m = x + (y-x)/2;                     //划分
  int p = x, q = m, i = x;
  merge_sort(A, x, m, T);                     //递归求解
  merge_sort(A, m, y, T);                    //递归求解
  while(p < m || q < y){
    if(q >= y || (p < m && A[p] <= A[q])) T[i++] = A[p++];
                                              //从左半数组复制到临时空间
    else T[i++] = A[q++];                    //从右半数组复制到临时空间
  }
  for(i = x; i < y; i++) A[i] = T[i];     //从辅助空间复制回A数组
 }
}

2.逆序对求解:
LP1908
3.快速排序
4.二分查找及上下界

8.3递归与分治

棋盘和巨人与鬼,特点在于分治为好几块,而不是简单的二分。

1.棋盘覆盖问题
2.循环日程表问题
3.UVa1411 巨人与鬼

8.4贪心法

1.背包相关问题
2.区间相关问题
(1)选择不相交区间-hdu2037
(2)区间选点-UVa10148
(3)区间覆盖-POJ2376
3.Huffman编码树:理解思想即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值