5 条题解

  • 0
    @ 2024-9-17 15:57:43
    /*
    int      %o/%lo(八进制) %d/%i/%ld/%li(十进制) %x/%lx(十六进制)[如标名为o/lo/d/i/lo/li/x/lx即输出为八进制/十进制/十六进制]
    longlong %lld
    float    %f/%e
    double   %lf/%le
    char     %c
    char[]   %s
    'a'=97
    'z'=122
    'A'=65
    'Z'=90
    '0'=48
    '9'=57
    */
    #include <iostream>
    #include <iomanip>
    #include <cmath>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <ctime>
    #include <limits>
    #include <assert.h>
    #include <stdlib.h>
    using namespace std;
    #define LL long long
    #define ull unsigned long long
    const int N=1e5+10;
    const int INF=0x3f3f3f3f;
    const double pi=3.1416;
    int n,m,a[N],l,r,ans;
    bool check(int mid){
    	int sum=1;
    	int last=a[1];
    	for(int i=2;i<=n;i++){
    		if(last+mid<=a[i]){
    			last=a[i];
    			sum++;
    		}
    	}
    	return sum>=m;
    }
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    	}
    	sort(a+1,a+n+1);
    	l=1;
    	r=a[n]-a[1];
    	while(l<=r){
    		int mid=(l+r)>>1;
    		if(check(mid)){
    			ans=mid;
    			l=mid+1;
    		}else{
    			r=mid-1;
    		}
    	}
    	cout<<ans<<endl;
    return 0;
    }
    
    • 0
      @ 2024-7-31 9:55:06

      #include<iostream>

      #include<stack>

      #include<queue>

      #include<cstring>

      #include<cmath>

      #include<algorithm>

      using namespace std;

      const int N = 1e6 +10;

      const int INF=0x3f3f3f;

      int ans,l = 1,r,L,n,k,a[N];

      bool check(int mid){

      int sum = 1;

      int last = a[1];

      for(int i = 2;i<=n;i++){

      if(a[i] - last >= mid){

      sum ++;

      last = a[i];

      }

      }

      return sum >= k;

      } int main(){

      cin>>n>>k;

      for(int i = 1;i<=n;i++)

      cin>>a[i];

      sort(a+1,a+n+1);

      r = a[n] - a[1];

      while(l<=r){

      int mid = l + r >>1;

      if(check(mid)){

      ans = mid;

      l = mid + 1;

      }

      else

      r = mid - 1;

      }

      cout<<ans;

      }

      • 0
        @ 2024-6-2 18:01:15
        #include<bits/stdc++.h>
        using namespace std;
        const int N=1e5+10;
        int n,m,a[N],l,r,ans;
        bool check(int mid){
        	int sum=1,l=a[1];
        	for(int i=2;i<=n;i++){
        		if(a[i]>=l+mid){
        			sum++;
        			l=a[i];
        		}
        	}
        	return sum>=m;
        }
        int main(){
        	cin>>n>>m;
        	for(int i=1;i<=n;i++){
        		cin>>a[i];
        	}
        	sort(a+1,a+n+1);
        	l=1;
        	r=a[n];
        	while(l<=r){
        		int mid=l+r>>1;
        		if(check(mid)){
        			ans=mid;
        			l=mid+1;
        		}else{
        			r=mid-1;
        		}
        	}
        	cout<<ans;
            return 0;
        }
        
        
        • 0
          @ 2024-6-2 18:00:26
          #include <bits/stdc++.h>
          using namespace std;
          const int N = 1e5 + 10;
          int n, m;
          int a[N], l, r, mid, ans;
          bool check(int mid){
          	int sum = 1;
          	int last = a[1];
          	for(int i = 2 ; i <= n ; i++){
          		if(a[i] >= last + mid){
          			sum++;
          			last = a[i];
          		}
          	}
          	return sum >= m;
          }
          int main(){
          	cin >> n >> m;
          	for(int i = 1 ; i <= n ; i++) cin >> a[i];
          	sort(a + 1 , a + n + 1);
          	l = 1;
          	r = a[n];
          	while(l <= r){
          		int mid = l + r >> 1;
          		if(check(mid)){
          			ans = mid;
          			l = mid + 1;
          		}
          		else r = mid - 1;
          	}
          	cout << ans << endl;
          	return 0;
          }
          
          • 0
            @ 2024-6-2 17:59:29

            #include<iostream> #include<algorithm> #include<iomanip> #include<cstring> #include<string> #include<cmath> #include<queue> #include<set> using namespace std; const int N=1e5+10; const int INF=0x3f3f3f3f; int n,m,a[N],l,r,ans; bool check(int mid) { int sum=1,last=a[1]; for(int i=2;i<=n;i++) { if(a[i]-last>=mid) { sum++; last=a[i]; } } return sum>=m; } int main(){ cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1); l=1,r=a[n]; while(l<=r) { int mid=l+r>>1; if(check(mid)) { ans=mid; l=mid+1; } else r=mid-1; } cout<<ans; return 0; }

            • 1

            信息

            ID
            357
            时间
            1000ms
            内存
            512MiB
            难度
            6
            标签
            递交数
            318
            已通过
            87
            上传者