7 solutions

  • 0
    @ 2022-2-5 17:09:19

    水题 对于这个题目 我们可以发现的是 我们如果数组排序好后 从第一个地方往后面查找的话 差值越来越大 贪心的思想 只要差值没有减小的话 就没有继续下去的必要 看似n*n的复杂度 其实更接近nlogn 代码 #include <iostream> #include <math.h> #include <algorithm> using namespace std; const int N=10010; int res[N]; int finmin(int t,int num[],int n) { int min=9999; for(int i=0;i<n;++i) { if(abs(num[i]-t)<=min) min=abs(num[i]-t); else break; } return min; } int main() { int n,c,ans=0; cin>>n>>c; for(int i=0;i<n;++i) { cin>>res[i]; } sort(res,res+n); while(c--) { int t; cin>>t;

    	ans+=finmin(t,res,n);
    	
    }
    cout<<ans;
    
    return 0;
    

    }

    Information

    ID
    280
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    8
    Tags
    # Submissions
    227
    Accepted
    40
    Uploaded By