1,
任意次数的话岂不是,
比较显然的做法…
全偶数/2,结果不会更坏。
ai=2^ri pi…
参数也不给清。
if pmax对应的a 是以2^ri pi的形式存在
因为 !i&2,且pi<=pmax,
则必存在2^ri pmax不会更坏。
因此将2^rp_\text{max}2
r
p
max
变成p_\text{max}p
max
答案不会更劣.
直觉下之后的做法是
尽量让其他数和它相近,
对于小于pmax的,尽量保持
对于大于pmax的,尽量除以2.
2,
std:: 是个名称空间标示符,C++标准库中的函数或者对象都是在命名空间std中定义的,所以我们要使用标准函数库中的函数或对象都要使用std来限定。
一般来说,std都是要调用C++标准库时,要写上std;
使用非标准库文件iostream.h,不用写。
3,
应该是某个数列模型感觉…
4,
终于知道为什么加std::,
这人咋变量明直接就用min和max。
5,
样例答案有差距一般是?
6,
int p_max=1;
for(int num:nums)
{
while(num%2==0) num/=2;
p_max=max(p_max,num);
}
vector<int> upper;
int min=p_max;
for(int num:nums)
{
if(num%2==1) num*=2;
if(num>=2*p_max) num/=2;
if(num>=p_max) upper.push_back(num);
min=std::min(min,num);
}
sort(upper.begin(),upper.end());
int ans=upper.back()-min;
for(int i=upper.size()-1;upper[i]>p_max;i-=1)
{
min=std::min(min,upper[i]/2);
ans=std::max(ans,upper[i-1]-min);
}
return ans;
woc。