2 条题解

  • 0
    @ 2025-3-22 14:02:24

    一道挺难的if判断


    这题有N种可能 1.

    1 2 3 4 5 6 7
    l   p       r
    

    l=1,r=n

    这种情况直接输出0

    p是多少都无关紧要

    if(l==1&&r==n)cout<<0; 2.

    1 2 3 4 5 6 7
    l   p     r
    

    l=1且r!=n

    输出abs(r-p)+1 else if(l==1)cout<<

    3.
    ```language
    1 2 3 4 5 6 7
      l   p     r
    

    r=n且l!=1

    跟l=1类似

    else if(l==n)cout<<abs(l-p)+1

    4

    1 2 3 4 5 6 7
     l    p   r
    

    p>=r&&p<=l

    这个最麻烦

    要先求先去l还是r

    else if(p>=l&&p<=r)cout<<min(abs(l-p),abs(r-p))+r-l+2;
    

    5

    1 2 3 4 5 6 7
      l     p   r
    

    r>p

    输出p-l+2

    else if(p>r)cout<<p-l+2;

    最后是6

    1 2 3 4 5 6 7
    r   l     p
    

    r<l

    到这里已经不需要if了

    else cout<<r-p+2;

    最后附上含注释完整版AC代码

    注意:本代码已开启防人机抄袭

    using namespace std;
    const int N=1e5+5,INF=0x3f3f3f3f;
    typedef long long LL;
    int n,p,l,r;
    int main()
    {
    	cin>>n>>p>>l>>r;
    	if(l==1&&r==n)cout<<0;//情况1 
    	else if(l==1)cout<<abs(r-p)+1;//情况2 
    	else if(r==n)cout<<abs(l-p)+1;//情况3 
    	else if(p>=l&&p<=r)cout<<min(abs(l-p),abs(r-p))+r-l+2;//情况4 
    	else if(p>r)cout<<p-l+2;//情况5 
    	else cout<<r-p+2;//情况6 
    	return O;//CE 
    }
    
    • 0
      @ 2025-3-21 20:04:11

      #include #include<stdio.h> #include #include<math.h> #include<string.h> #define ll longlong const int N=1e5+10; const int INT=0x3f3f3f3f; using namespace std; int main() {

      int n, pos, l, r;
      cin >> n >> pos >> l >> r;
      if (l == 1 && r == n) {
          cout << 0 << endl;
          return 0;
      }
      if (l == 1) {
          int time = abs(pos - r) + 1; 
          cout << time << endl;
          return 0;
      }
      if (r == n) {
          int time = abs(pos - l) + 1; 
          cout << time << endl;
          return 0;
      }
      int option1 = abs(pos - l) + 1 + (r - l) + 1; 
      int option2 = abs(pos - r) + 1 + (r - l) + 1; 
      int minTime = min(option1, option2);
      cout << minTime << endl;
      return 0;
      

      }

      • 1

      信息

      ID
      2308
      时间
      1000ms
      内存
      256MiB
      难度
      7
      标签
      递交数
      268
      已通过
      64
      上传者