首页 > 其他分享 >CF Div. 3 C Beautiful Triple Pairs

CF Div. 3 C Beautiful Triple Pairs

时间:2024-05-21 18:10:59浏览次数:25  
标签:Beautiful Pairs ++ res arr 三元组 ii mp Div

原题链接

标签

组合数学(combinatorics)

数据结构(data structures)

题目大意

一个数组 \(a\) 。对于每个 \(j\) ( \(1 \le j \le n - 2\) ) 写出一个由 \([a_j, a_{j + 1}, a_{j + 2}]\) 组成的三元组。

满足以下条件之一,那么这对三元组就是美丽的:

  • \(b_1 \ne c_1\) 和 \(b_2 = c_2\) 以及 \(b_3 = c_3\) ;
  • \(b_1 = c_1\) 和 \(b_2 \ne c_2\) 和 \(b_3 = c_3\) ;
  • \(b_1 = c_1\) 和 \(b_2 = c_2\) 和 \(b_3 \ne c_3\) 。

求书写的三元组 \([a_j, a_{j + 1}, a_{j + 2}]\) 中优美的三元组对数。

思路

为保证每次只遍历一次,将每次遇到的三元组\([a_j, a_{j + 1}, a_{j + 2}]\) 处理为三小组

\([0, a_{j + 1}, a_{j + 2}]\)

\([a_j, 0 , a_{j + 2}]\)

\([a_j, a_{j + 1}, 0]\)

存入map中,存储次数,再将原三元组存入map中

每次查找当前小组的次数,减去匹配到的原组次数

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]++;
}

就可以只遍历一次数组

标签:Beautiful,Pairs,++,res,arr,三元组,ii,mp,Div
From: https://www.cnblogs.com/lulaalu/p/18204682

相关文章

  • Codeforces Round 946 (Div. 3)
    CodeforcesRound946(Div.3)总结:赛时状态很好,做出了感觉平常会赛时寄掉但是赛后补题的E,但是也因此花费时间太多,没时间去做更简单的F和G,赛后G用时十分钟AC,F码的有点麻烦,用时40分钟左右,感觉三个小时能AK?A.PhoneDesktop题意:给定3*5的平面,有a个1*1的格子和b个2*2的格子,求完全......
  • vue3+ts 指令拖拽div案例
    <template><divclass="box"v-move><divclass="header"></div><div>内容</div></div></template><scriptsetuplang="ts">import{ref,Directive,DirectiveBinding}......
  • Codeforces Round 945 (Div. 2) (A - E)
    A每一轮对总分的贡献都是\(2\),如果\(p_1+p_2+p_3\)为奇数则无解。\(p_1+p_2\lep_3\),最多\(p_1+p_2\)轮。\(p_1+p_2>p_3\),可以\(1,2\)轮流将\(3\)耗完,然后互相匹配,最多\(\dfrac{p_1+p_2+p_3}{2}\)。B如何判断一个\(k_0\)是否符合条件?处......
  • ABC354 E - Remove Pairs 做题笔记
    ABC354E-RemovePairs做题笔记题目链接对于这种带有博弈论的dp,考虑这样设计状态:令\(f_s\in\{1,0\}\)表示“游戏局面”为\(s\)时,先手必胜还是必败。本题中,“游戏局面”可以表示为剩余卡牌的编号集合。又因为本题中\(N\)​很小,通过状压,可以直接用一个int表示游戏......
  • CF937Div4E 分段比较
    NearlyShortestRepeatingSubstring本题思路:(有长度L|n时,长度为L的串才是s的子串)降低枚举频率,此时枚举最小子串长度L(有L*x=s)。接下来考虑其,最多不匹配位置为1(当不匹配位置为2时直接弹出)题解认为:不同的字母也可能出现在前缀中(例如,......
  • BeautifulSoup库
    一、安装BeautifulSoup库 可以现在目前python安装了哪些包安装beautifulsoup二、beautifulsoup官网https://www.crummy.com/software/BeautifulSoup/bs4/doc/三、beautifulsoup的主要解析器 四、beautifulsoup的find函数查找html的titlefrombs4importBeautifulS......
  • Codeforces Round 944 (Div. 4)
    CodeforcesRound944(Div.4)需要一些trick的一场H:2-sat的板子,已经计入2-sat专题,此处不再详细描述。题目用矩阵包装和博弈包装,我们需要慢慢读题,分析样例,找到问题的关键点。G:题意:给定一个数组,数组中任何两个数异或<4的数对可以交换位置,可以交换无限次,求能够形成的字典序最......
  • Codeforces Round 945 (Div. 2) A-D
    A.ChessForThree模拟。首先可以发现每一次对局三人的得分总和加\(2\),所以若干次对局后得分总和也一定是\(2\)的倍数,然后为了使和棋数量尽可能多,一直让得分最高的两人和棋且得分数各减\(1\)直到无法做出和棋为止。#include<bits/stdc++.h>usingnamespacestd;#def......
  • Codeforces Round 945 (Div. 2)
    A-ChessForThree因为序列满足a<=b<=c的情况显然通过得分可以观察出得分总和必定为偶数否则不成立求的是最大平局数那么直接假设全部都是平局这时候发现如果c过大会导致后面的局数不是平局那么只用把c>a+b的情况取出而此时平均数为a+b点击查看代码#include<bits/stdc+......
  • 「比赛总结」CF Round 834 Div.3 比赛总结
    比赛链接最后AC了\(6\)题。首先开局拼手速过了前三题。然后一眼没有瞪出来D,就写了个随机化,然后交上去发现TLEontest#3,发现随机化的时候阙值取太大了,然后就把阙值改小了,然后交上去发现WAontest#3,这也太不牛了吧!于是赶紧跳了。然后看到E,这不是个傻逼题吗?严格小于......