U563977 签到题
核心代码
if(a==b)
{
cout<<0;
}
if(a<b)
{
cout<<min(abs(a+b)+1,b-a);
}
if(a>b)
{
cout<<min(abs(a+b)+1,a-b+2);
}
分为三种大情况
1.x=y
不用操作,输出0
2.x<y
(1).x,y>0
对x执行(y-x)次操作一,操作次数为(y-x)次
(2)x,y<0
∴-x>-y
对x执行(y-x)次操作一,操作次数为(y-x)次
(3)x≤0,y≥0
对x执行(y-x)次操作一,操作次数为(y-x)次
若-x≤y:对x执行操作二,x′=-x,再对x′执行(y-x′)次操作一,总操作次数为(x+y+1)次
3.x>y
(1).x,y>0
对x执行操作二,x′=-x,再对x′执行(-y-x′)次操作一,最后对x′执行操作二,总操作次数为(x-y+2)次
(2)x,y<0
∴-x<-y
对x执行操作二,x′=-x,再对执行(-y-x′)次操作一,最后对
执行操作二,总操作次数为(x-y+2)次
(3)x≥0,y≤0
若-x≤y:对x执行操作二,x′=-x,再对x′执行(-y-x′)次操作一,最后对执行操作二,操作次数为(x-y+2)次
若-x≥y:对x执行(x+y)次操作一,再对x执行操作二,总操作次数为(x+y+1)次
U562413 进步的芒果
核心代码
int lowbit(int x)
{
return x & (-x);
}
void modify(int x,int y)
{
for(int i=x;i<=n;i+=lowbit(i)
{
c[i]+=y;
}
}
int query(int x)
{
int res=0;
for(int i=x;i>0;i-=lowbit(i)
{
res+=c[i];
}
return res;
}
向下取整 ⌊x⌋ 表示的是不大于 的最大整数,