首页 > TAG信息列表 > Martial

cf1626 D. Martial Arts Tournament(枚举)

题意: 给定数组,可选 \(x<y\),把小于 \(x\) 的数划为div1,除此之外小于 \(y\) 的数划为div2,剩下的数为div3。现往每组中放入额外的数,使得每组的大小都是2的幂。输出至少要加几个数。 n <= 2e5,1 <= ai <= n 思路: 开桶记录出现次数。枚举加数后div1的大小 \(2^i\) 以及加数后div2的大小

D. Martial Arts Tournament

传送门 题意: 给你n个数,构造一组x,y,将这n个数划分为小于等于x,大于等于y以及大于x小于y的数三个区间,我们可以往每个区间添加数,使得每个区间的数为2的幂次,输出添加数的最小个数。 思路: 设num[x]为1-x中数的个数,我们枚举小于等于x的区间需要添加的2的幂次和大于x且小于y的2的幂次

D. Martial Arts Tournament 题解(贪心)

题目链接 题目思路 这个题目感觉比较有意思 就是分为三段,让前面两段的数量尽可能接近\(2^i,2^j\) 这样的正确性感觉也不太会证明,不过看起来挺真的... 代码 #include<bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define debug cout<<"I AM HERE