13 条题解

  • 1
    @ 2025-9-21 12:20:48
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    int L,n,m;
    int a[N],l,r,ans;
    bool check(int mid){
    	int last=0;
    	int sum=0;
    	for(int i=1;i<=n;i++){
    		if(a[i]-last<mid){
    			sum++;
    		}
    		else{
    			last=a[i];
    		}
    	}
    	return sum<=m;
    }
    int main(){
    	cin>>L>>n>>m;
    	for(int i=1;i<=n;i++)
    		cin>>a[i];
    	a[++n]=L;
    	r=L;
    	while(l<=r){
    		int mid=l+r>>1;
    		if(check(mid)){
    			ans=mid;
    			l=mid+1;
    		}
    		else
    			r=mid-1;
    	}
    	cout<<ans;
    
    }
    
    
    • 1
      @ 2024-12-17 17:32:05
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e5+10;
      int L,n,m;
      int a[N],l,r,ans;
      bool check(int mid){
      	int last=0;
      	int sum=0;
      	for(int i=1;i<=n;i++){
      		if(a[i]-last<mid){
      			sum++;
      		}
      		else{
      			last=a[i];
      		}
      	}
      	return sum<=m;
      }
      int main(){
      	cin>>L>>n>>m;
      	for(int i=1;i<=n;i++)
      		cin>>a[i];
      	a[++n]=L;
      	r=L;
      	while(l<=r){
      		int mid=l+r>>1;
      		if(check(mid)){
      			ans=mid;
      			l=mid+1;
      		}
      		else
      			r=mid-1;
      	}
      	cout<<ans;
      
      }
      小鸟
      
      • 0
        @ 2026-7-15 11:43:08
        #include<bits/stdc++.h>
        using namespace std;
        const int N=1e5+10;
        int L,n,m;
        int a[N],l,r,ans;
        bool check(int mid){
        	int last=0;
        	int sum=0;
        	for(int i=1;i<=n;i++){
        		if(a[i]-last<mid){
        			sum++;
        		}
        		else{
        			last=a[i];
        		}
        	}
        	return sum<=m;
        }
        int main(){
        	cin>>L>>n>>m;
        	for(int i=1;i<=n;i++)
        		cin>>a[i];
        	a[++n]=L;
        	r=L;
        	while(l<=r){
        		int mid=l+r>>1;
        		if(check(mid)){
        			ans=mid;
        			l=mid+1;
        		}
        		else
        			r=mid-1;
        	}
        	cout<<ans;
        
        }
        • 0
          @ 2026-3-27 20:36:43
          #include<bits/stdc++.h>
          using namespace std;
          int L,n,m,a[50004],l,r,ans;
          bool check(int mid)
          {
          	int last=0,sum=0;
          	for(int i=1;i<=n;i++)
          		a[i]-last>=mid?last=a[i]:sum++;
          	return sum<=m;
          }
          int main()
          {
              ios::sync_with_stdio(0);
              cin.tie(0);
             	scanf("%d%d%d",&L,&n,&m);
             	for(int i=1;i<=n;i++)
             		scanf("%d",&a[i]);
             	a[++n]=L,l=1,r=L;
             	while(l<=r)
             	{
          	   	int mid=(l+r)>>1;
          	   	check(mid)?ans=mid,l=mid+1:r=mid-1;
          	}
             	printf("%d",ans);
             	return 0;
          }
          
          • 0
            @ 2025-8-6 16:16:21
            #include<bits/stdc++.h>
            using namespace std;
            int n,m,L,maxx=-1;
            int a[10000005];
            int check(int x){
            	int sum=0,now=0;
            	for(int i=1; i<=n; i++){
            		if(a[i]-a[now]<x) sum++;
            		else now=i;
            	}
            	return sum<=m; 
            }
            int main(){
            	cin >> L >> n >> m;
            	for(int i=1; i<=n; i++){
            		cin >> a[i];		
            	}
            	a[n+1]=L;
            	int l=0,r=L,mid;
            	while (l<r){
            		mid=(l+r+1)/2;
            		if(check(mid)){
            			l=mid;
            		}
            		else r=mid-1;
            	}
            	cout << r;
            	return 0;
            }
            
            • 0
              @ 2024-7-30 11:17:25

              #include

              #include

              #include

              #include

              #include

              #include

              using namespace std;

              const int N = 5e4 +10;

              const int INF=0x3f3f3f;

              int n,mid,m,a[N],l,r,ans,L;

              bool check(int k){

              int last = 0;

              int sum = 0;

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

              if(a[i] - last < k)

              sum++;

              else

              last = a[i];

              }

              return sum <= m;

              }

              int main(){

              cin>>L>>n>>m;

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

              cin>>a[i];

              a[++n] = L;

              r = L;

              while(l<=r){

              int mid = l + r >>1;

              if(check(mid)){

              ans = mid;

              l = mid + 1;

              }

              else

              r = mid - 1;

              }

              cout<<ans;

              }

              • 0
                @ 2024-7-30 11:14:57

                #include <bits/stdc++.h> using namespace std; int L,n,m; const int N=1e5+10; int a[N],l,r,ans; bool check(int mid){ int last = 0; int sum=0; for(int i=1;i<=n;i++) if(a[i]-last<mid){ sum++; } else{ last=a[i]; }

                return sum<=m;
                

                } int main(){ cin>>L>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; } a[++n]=L; r=L; 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
                  @ 2023-5-14 19:31:13
                  #include<bits/stdc++.h>
                  using namespace std;
                  int L,n,m,a[100000];
                  int p(int x){
                      int p=0,q=0;
                      for(int i=1;i<=n;i++)
                      if(a[i]-p<x)q++;
                      else p=a[i];
                      return q;
                  }
                  int main(){
                      cin>>L>>n>>m;
                      for(int i=1;i<=n;i++)
                      cin>>a[i];
                      a[++n]=L;
                      int l=0,r=L;
                      int ans=-111;
                      while(l<=r){
                          int mid=(l+r)/2;
                          int x=p(mid);
                          if(x<=m)l=mid+1,ans=mid;
                          else r=mid-1;
                      }
                      cout<<ans;
                  }
                  
                  • 0
                    @ 2022-5-14 11:25:07
                    #include <queue>
                    #include <math.h>
                    #include <stack>
                    #include <stdio.h>
                    #include <iostream>
                    #include <vector>
                    #include <iomanip>
                    #include <string.h>
                    #include <algorithm>
                    using namespace std;
                    #define LL long long
                    const int N = 1e6 + 10;
                    const int INF = 0x3f3f3f3f;
                    LL a[N];
                    LL k, n,m;
                    bool cheak(int x)
                    {
                    	int pre=0;
                    	int sum = 0;
                    	for(int i=1;i<=n;i++)
                    	{
                    		if(a[i]-pre<x)
                    			sum++;
                    		else
                    			pre=a[i];
                    		if(sum>m)
                    			return false; 
                    	}
                    	return true;
                    }
                    int find()
                    {
                    	int l,r;
                    	l=1,r=k;
                    	while(l<r)
                    	{
                    		int mid=l+r+1>>1;
                    		if(cheak(mid))
                    			l=mid;
                    		else
                    			r=mid-1;
                    	}
                    	return l;
                    }
                    int main()
                    {
                    	cin >>k>>n>>m;
                    	for(int i=1;i<=n;i++)
                    		scanf("%lld",&a[i]);
                    	a[0]=0;
                    	a[++n]=k;
                    	cout << find()<<endl;
                    	return 0; 
                    }
                    
                    
                    • 0
                      @ 2021-12-25 19:46:23
                      /*****************************************
                      备注:
                      ******************************************/
                      #include <queue>
                      #include <math.h>
                      #include <stack>
                      #include <stdio.h>
                      #include <iostream>
                      #include <vector>
                      #include <iomanip>
                      #include <string.h>
                      #include <algorithm>
                      using namespace std;
                      #define LL long long
                      const int N = 1e5 + 10;
                      const int INF = 0x3f3f3f3f;
                      LL n,m,k;
                      LL a[N];
                      bool cheak(int mid)
                      {
                      	int pre=0;
                      	int cnt=0;
                      	for(int i=1;i<=m+1;i++)
                      	{
                      		if(a[i]-pre<mid)
                      		{
                      			cnt++;
                      			if(cnt>k)
                      				return false;
                      		}
                      		else
                      			pre=a[i];
                      	}
                      	return true;
                      }
                      int main()
                      {
                      	cin>>n>>m>>k;
                      	for(int i=1;i<=m;i++)
                      		cin>>a[i];
                      	a[0]=0;
                      	a[m+1]=n;
                      	LL l=1,r=n;
                      	while(l<r)
                      	{
                      		LL mid=l+r+1>>1;
                      		if(cheak(mid))
                      		{
                      			l=mid;
                      		}
                      		else
                      			r=mid-1;	
                      	}
                      	cout<<l<<endl;
                      	return 0;
                      }
                      
                      • 0
                        @ 2021-12-5 18:04:48
                        /*****************************************
                        备注:
                        ******************************************/
                        #include <queue>
                        #include <math.h>
                        #include <stack>
                        #include <stdio.h>
                        #include <iostream>
                        #include <vector>
                        #include <iomanip>
                        #include <string.h>
                        #include <algorithm>
                        using namespace std;
                        #define LL long long
                        const int N = 1e5 + 10;
                        const int INF = 0x3f3f3f3f;
                        int main()
                        {
                        	while(l < r) // 最小值的最大值
                        	{
                        		int mid = l + r + 1 >> 1;
                        		if(cheak(mid))
                        			l = mid;
                        		else 
                        			r = mid -1 ;
                        	}
                        	cout << l << endl;
                        
                        
                        	while(l < r) // 最大值的最小值
                        	{
                        		int mid = l + r >> 1;
                        		if(cheak(mid))
                        			r = mid;
                        		else 
                        			l = mid + 1;
                        	}
                        	cout << r << endl;
                        
                        
                        	while(l <= r) // 二分搜索
                        	{
                        		int mid = l + r >> 1;
                        		if(a[mid] == k)
                        		{
                        			cout << mid ;
                        			break;
                        		}
                        		else if(a[mid] > k) 
                        		{
                        			r = mid - 1;
                        		}
                        		else 
                        		{
                        			l = mid + 1;
                        		}
                        	}
                        	return 0;
                        }
                        
                        • -1
                          @ 2025-9-27 17:03:22
                          #include<bits/stdc++.h>
                          using namespace std;
                          int n,m,L,maxx=-1;
                          int a[10000005];
                          int check(int x){
                          	int sum=0,now=0;
                          	for(int i=1; i<=n; i++){
                          		if(a[i]-a[now]<x) sum++;
                          		else now=i;
                          	}
                          	return sum<=m; 
                          }
                          int main(){
                          	cin >> L >> n >> m;
                          	for(int i=1; i<=n; i++){
                          		cin >> a[i];		
                          	}
                          	a[n+1]=L;
                          	int l=0,r=L,mid;
                          	while (l<r){
                          		mid=(l+r+1)/2;
                          		if(check(mid)){
                          			l=mid;
                          		}
                          		else r=mid-1;
                          	}
                          	cout << r;
                          	return 0;
                          }
                          
                          • -1
                            @ 2024-11-3 16:24:56
                            /*
                            int      %o/%lo 8 %d/%i/%ld/%li 10 %x/%lx 16
                            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 L,n,m,a[N],ans,l,r;
                            bool check(int mid){
                            	int last=0,sum=0;
                            	for(int i=1;i<=n;i++){
                            		if(a[i]-last<mid){
                            			sum++;
                            		}else{
                            			last=a[i];
                            		}
                            	}
                            	return sum<=m;
                            }
                            int main(){
                            	cin>>L>>n>>m;
                            	for(int i=1;i<=n;i++){
                            		cin>>a[i];
                            	}
                            	a[++n]=L;
                            	l=1,r=L;
                            	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
                            755
                            时间
                            1000ms
                            内存
                            128MiB
                            难度
                            6
                            标签
                            递交数
                            814
                            已通过
                            257
                            上传者