题意
找到一个连续区间和另一个连续区间,它两拼起来也要求每个数都互不相同,问拼起来后最大的长度是多长 (n<=1000)
题解
首先预处理出每位数字i左边第一个出现的位置和右边第一个出现的位置(用来快速确定互不相同的连续区间)之后枚举左区间的右端点,向左扩充连续区间将其中的位置丢入map,之后枚举右区间的左端点,向右扩充,边扩充边统计答案(即边扩充边缩放答案)
代码
/**
* author: TelmaZzzz
* create: 2019-10-04-20.33.20
**/
#include <map>
#include <set>
#include <ctime>
#include <cmath>
#include <queue>
#include <stack>
#include <ctime>
#include <string>
#include <vector>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
//#include <random>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
void _R(int &x) {
scanf("%d", &x); }
void _R(ll &x) {
scanf("%lld", &x); }
void _R(db &x) {
scanf("%lf", &x); }
void _R(char &x) {
scanf(" %c", &x); }
void _R(char *x) {
scanf("%s", x); }
void R() {
}
template<class T, class... U> void R(T &head, U &... tail) {
_R(head);