深入浅出蓝桥杯:算法基础概念与实战应用(二)基础算法(下)
算法基础概念与实战应用(二) 基础算法(下)
文章目录
- 算法基础概念与实战应用(二) 基础算法(下)
- 一、贪心算法
- 8.1 简单贪⼼
- 8.1.1 货仓选址
- 8.1.2 最⼤⼦段和
- 二、
- 三、
- 四、
- 五、
- 六、
- 总结
一、贪心算法
8.1 简单贪⼼
8.1.1 货仓选址
牛客网链接


代码如下(示例):
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 1e5 + 10;
int n;
LL a[N];
int main()
{cin >> n;for (int i = 1; i <= n; i++) cin >> a[i];sort(a + 1, a + 1 + n);LL ret = 0;// 利⽤中间值来计算// for(int i = 1; i <= n; i++)// {// ret += abs(a[i] - a[n / 2]);// }// ⽤结论计算for (int i = 1; i <= n / 2; i++){ret += a[n - i + 1] - a[i];}cout << ret << endl;return 0;
}
8.1.2 最⼤⼦段和
牛客网链接


代码如下(示例):
#include <iostream>
using namespace std;
typedef long long LL;
const int N = 2e5 + 10;
int n;
LL a[N];
int main()
{cin >> n;for (int i = 1; i <= n; i++) cin >> a[i];LL sum = 0, ret = -1e6;for (int i = 1; i <= n; i++){sum += a[i];ret = max(ret, sum);if (sum < 0) sum = 0;}cout << ret << endl;return 0;
}
