标签
cnblogs
codeforces
字数
319 字
阅读时间
2 分钟
题目大意
一个数组
满足以下条件之一,那么这对三元组就是美丽的:
和 以及 ; 和 和 ; 和 和 。
求书写的三元组
思路
为保证每次只遍历一次,将每次遇到的三元组
存入map中,存储次数,再将原三元组存入map中
每次查找当前小组的次数,减去匹配到的原组次数
C++
map<tuple<int, int, int>, int>mp;
int res = 0;
rep(ii, 0, n - 2) {
tuple<int, int, int>t1 = { 0 ,arr[ii + 1] , arr[ii + 2] };
tuple<int, int, int>t2 = { arr[ii] , 0 , arr[ii + 2] };
tuple<int, int, int>t3 = { arr[ii] , arr[ii + 1] , 0 };
tuple<int, int, int>t = { arr[ii] , arr[ii + 1] , arr[ii + 2] };
res += mp[t1]++ - mp[t];
res += mp[t2]++ - mp[t];
res += mp[t3]++ - mp[t];
mp[t]++;
}就可以只遍历一次数组