2 条题解

  • 0

    刚开始我想着用BFS做的......

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define abs_(x) max(x,-(x))
    ll s,t,l,r;
    int get(ll nl,ll nr)
    {
        if(nl<=t&&nr>=t) return 0;
        ll tl=min(min(2*l-nl,2*l-nr),min(2*r-nl,2*r-nr));
        ll tr=max(max(2*l-nl,2*l-nr),max(2*r-nl,2*r-nr));
        return get(tl,tr)+1;
    }
    int work()
    {
        scanf("%lld %lld %lld %lld",&s,&t,&l,&r);
        if(s%2!=t%2) return -1;
        if(l==r)
        {
            if(abs_(s-l)!=abs_(t-l)) return -1;
            if(s==t) return 0;
            return 1;
        }
        return get(s,s);
    }
    signed main()
    {
        int T;
        scanf("%d",&T);
        while(T--) printf("%d\n",work());
        return 0;
    }
    
    
  • 0
    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define abs_(x) max(x,-(x))
    ll s,t,l,r;
    int get(ll nl,ll nr)
    {
        if(nl<=t&&nr>=t) return 0;
        ll tl=min(min(2*l-nl,2*l-nr),min(2*r-nl,2*r-nr));
        ll tr=max(max(2*l-nl,2*l-nr),max(2*r-nl,2*r-nr));
        return get(tl,tr)+1;
    }
    int work()
    {
        scanf("%lld %lld %lld %lld",&s,&t,&l,&r);
        if(s%2!=t%2) return -1;
        if(l==r)
        {
            if(abs_(s-l)!=abs_(t-l)) return -1;
            if(s==t) return 0;
            return 1;
        }
        return get(s,s);
    }
    signed main()
    {
        int T;
        scanf("%d",&T);
        while(T--) printf("%d\n",work());
        return 0;
    }
    
    • @ 2024-8-8 18:16:25

      坑爹代码

      #include <cstdio>
      #include <cstring>
      #include <algorithm>
      using namespace std;
      #define ll long long
      #define abs_(x) max(x,-(x))
      ll s,t,l,r;
      int get(ll nl,ll nr)
      {
      	if(nl<=t&&nr>=t) return 0;
      	ll tl=min(min(2*l-nl,2*l-nr),min(2*r-nl,2*r-nr));
      	ll tr=max(max(2*l-nl,2*l-nr),max(2*r-nl,2*r-nr));
      	return get(tl,tr)+1;
      }
      int work()
      {
      	scanf("%lld %lld %lld %lld",&s,&t,&l,&r);
      	if(s%2!=t%2) return -1;
      	if(l==r)
      	{
      		if(abs_(s-l)!=abs_(t-l)) return -1;
      		if(s==t) return 0;
      		return 1;
      	}
      	return get(s,s);
      }
      signed main()
      {
      	int T;
      	scanf("%d",&T);
      	while(T--) printf("%d\n",work());
      	return 0;
      }
      
    • @ 2024-8-8 18:17:40

      @ 搞错了,从来:

      #include <iostream>
      #include <cstdio>
      #include <cstring>
      #include <algorithm>
      using namespace std;
      #define ll long long
      #define abs_(x) max(x,-(x))
      ll s,t,l,r;
      int get(ll nl,ll nr)
      {
      	if(nl<=t&&nr>=t) return 0;
      	ll tl=min(min(2*l-nl,2*l-nr),min(2*r-nl,2*r-nr));
      	ll tr=max(max(2*l-nl,2*l-nr),max(2*r-nl,2*r-nr));
      	return get(tl,tr)+1;
      }
      int work()
      {
      	scanf("%lld %lld %lld %lld",&s,&t,&l,&r);
      	if(s%2!=t%2) return -1;
      	if(l==r)
      	{
      		if(abs_(s-l)!=abs_(t-l)) return -1;
      		if(s==t) return 0;
      		return 1;
      	}
      	return get(s,s);
      }
      signed main()
      {
      	int T;
      	scanf("%d",&T);
      	while(T--) printf("%d\n",work());
      	return 0;
      }
      
  • 1

信息

ID
2999
时间
1000ms
内存
256MiB
难度
8
标签
递交数
95
已通过
14
上传者