day-2
Educational Codeforces Round 111 (Rated for Div. 2)
7.25 upd.
C. Manhattan Subarrays
比赛的时候想出来了 过了一周全忘了...
因为是统计整个数组的good arrays 序号就是点的横坐标 又因为 不组成bad triple 那么类似1 2 0 1 就是最长的合法串
即: 不满足 \(a_i <= a_j <= a_k || a_i >= a_j >= a_k\) 的 array 长度最大为4
直接暴力判断有多少长度为3 or 4的subarray满足就行
const int maxn = 1e6 + 7;
bool check(int a, int b, int c) {
return (a <= b && b <= c) || (a >= b && b >= c);
}
bool check(vector<int> vec) {
if (vec.size() <= 2)
return 1;
for (int i = 0; i < vec.size(); i++)
for (int j = i + 1; j < vec.size(); j++)
for (int k = j + 1; k < vec.size(); k++)
if (check(vec[i], vec[j], vec[k]))
return 0;
return 1;
}
int n, t, m, a[maxn];
void solve() {
cin >> t;
while (t--) {
cin >> n;
for (int i = 0; i < n; ++i)
cin >> a[i];
int ans = 0;
for (int st = 0; st < n; st++)
for (int len = 1; len <= 4; len++) {
int ed = st + len;
if (ed > n)
continue;
vector<int> vec;
for (int i = st; i < ed; i++)
vec.push_back(a[i]);
ans += check(vec);
}
cout << ans << endl;
}
#todo D E要补下...
困。。。
好像有些抑郁
有场cf 不知道咋样 菜哭
我看见 你

浙公网安备 33010602011771号