cf1626 D. Martial Arts Tournament(枚举)
题意:
给定数组,可选 \(x
n <= 2e5,1 <= ai <= n
思路:
开桶记录出现次数。枚举加数后div1的大小 \(2^i\) 以及加数后div2的大小 \(2^j\),从左到右尽量填满 \(2^i\),再从左到右尽量填满 \(2^j\) (二分找区间端点),剩下的属于div3。
const int N = 2e5 + 5, M = 18, INF = 0x3f3f3f3f;
int n, s[N];
int cal(int x) { //计算x至少加多少才是2的幂
for(int i = 0; ; i++) if((1<= x)
return (1<