3 条题解

  • 3
    @ 2024-8-7 14:23:35
    
    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N = 50005;
    ll a[N]; 
    ll L,n,m;
    bool check(ll lim){ 
    int res = 0,cnt = 0;
    for(int i = 1;i <= n;i++){ 
    if(res + a[i] - a[i - 1] >= lim) res = 0;
    else cnt++,res += a[i] - a[i - 1]; }
    return cnt <= m; 
    }
    int main(){
     cin >> L >> n >> m; 
     for(int i = 1;i <= n;i++){
      scanf("%d",&a[i]); 
      } 
      sort(a+1,a+1+n); 
      ll ans = 0;
       ll l = 0,r = L,mid;
        while(l <= r){
    	   mid = l+r>>1;
    	   if(check(mid)){ 
    	   ans = mid; l = mid + 1;
    	   } else{
    	    r = mid - 1;
    		} 
    		} 
    		 cout << ans << endl;
    		return 0;
    		}
    

    `

    • 2
      @ 2024-8-7 14:19:16

      #include #include #include #define ll long long using namespace std;

      const int N = 50005;

      ll a[N]; ll L,n,m;

      bool check(ll lim){ int res = 0,cnt = 0; for(int i = 1;i <= n;i++){ if(res + a[i] - a[i - 1] >= lim) res = 0; else cnt++,res += a[i] - a[i - 1]; } return cnt <= m; }

      int main(){ cin >> L >> n >> m; for(int i = 1;i <= n;i++){ scanf("%d",&a[i]); } //sort(a+1,a+1+n); ll ans = 0; ll l = 0,r = L,mid; while(l <= r){ mid = l+r>>1; if(check(mid)){ ans = mid; l = mid + 1; } else{ r = mid - 1; } } cout << ans << endl; return 0; }

      • 1
        @ 2024-8-7 14:27:32

        #include<bits/stdc++.h> using namespace std; long long s,n,m,a[100000],r; bool check(int mid){ long long j=0,w=0; for(long long i=1;i<=n+1;i++){ if(w+a[i+1]-a[i]>=mid)w=0; else j++,w+=a[i+1]-a[i]; } return j<=m; } int main(){ cin>>s>>n>>m; a[1]=0,a[n+2]=s; for(int i=2;i<=n+1;i++){ cin>>a[i]; } int l=1,r=s,mid,ans=0; while(l<=r){ mid=(r+l)>>1; if(check(mid)){ ans=mid; l=mid+1; }else { r=mid-1; } } cout<<ans; return 0; }

        • 1

        信息

        ID
        1030
        时间
        1000ms
        内存
        256MiB
        难度
        4
        标签
        (无)
        递交数
        25
        已通过
        17
        上传者