题解:CF2122B Pile Shuffling
Chenxuhang_play · · 题解
题目大意
有
每次操作中,你可以取出任意堆的顶部元素,并将其移动到任意堆的任意位置(包括原堆)。
计算最少需要多少次操作,才能使第
思路
需要分开计算
0 的移动次数
如果
如果
1 的移动次数
如果
如果
注意事项
-
注意由于每次操作会在不同的两个堆内被算,所以最后的结果需要除以
2 ,才是最终的答案。 -
多测不清空,爆零两行泪。
-
十年 OI 一场空,不开
long long见祖宗。
关键代码
cin>>n;
sum=0;
for(int i=0;i<n;i++)
{
cin>>a>>b>>c>>d;
if(a>c) sum+=a-c;
else if(a<c) sum+=c-a;
if(b>d) sum+=b-d+a*2;
else if(b<d) sum+=d-b;
}
cout<<sum/2<<endl;