题解:P11062 【MX-X4-T2】「Jason-1」加法
考虑分类讨论
1.a 与 b 都大于零或小于零,不论进行操作一还是操作二,其中的一个值都会越来越大,导致差值变大,所以一种情况为abs(a[i]-b[i]),然后还有一种情况,在此写一下:对于第一种情况:a=a+b,b=b则差值为 b 同理对于第二种情况差值为 a 所以主要代码为cout<<min(abs(a[i]),min(abs(b[i]),abs(a[i]-b[i])));。
2.接下来就是 a 和 b 异号的情况了(如 a=1,b=−8),如果在正数上相加正数会变小 ,如果在负数上相加负数会变大,双方的差值会越来越小,直到变成 0。
接下来代码就非常好写了,O(n) 的复杂度就能过。
#include<bits/stdc++.h> using namespace std; int n; int a[1000005]; int b[1000005]; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]>>b[i]; if((a[i]>0&&b[i]>0)||(a[i]<0&&b[i]<0)){ cout<<min(abs(a[i]),min(abs(b[i]),abs(a[i]-b[i])))<<endl; }else if(a==0||b==0){ cout<<0<<endl; }else{ cout<<0<<endl; } } return 0; }