P3143
题意:
要在排好序的数列中找出两段长度和最大的不重合的区间,并使两个区间中的最大值与最小值的差不大于k。
思路:
- 先排序
- 利用队列的性质,将以每一个元素为开始的可以放在同一层的钻石的数量记录下来。该元素分别为每一层放的第一个钻石的标号。
- 枚举,最后在n个元素中找到两个元素,使两层放的钻石数量和最大,且不包含重复的钻石。
输入 #1
7 3
10
5
1
12
9
5
14
输出 #1
5
数组 | Value |
---|---|
k | 10 5 1 12 9 5 14 |
k | 1 5 5 9 10 12 14 |
s | 1 2 1 3 2 2 1 |
mx | 3 3 3 3 2 2 1 |
s+mx | 1+3=4 2+3=5 1+3=4 3+1=4 2 2 1 |
#include <iostream>
#include <algorithm>
#include <cstring>
#include <math.h>
#include <functional>
#include <string>
#include <vector>
#include <map>
#include <stack>
#include <cstdio>