4 solutions

  • 4
    @ 2025-9-15 17:24:52
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    int n,k,a[N];
    bool check(int x)
    {
    	int cnt=0;
    	for(int i=1;i<=n;i++)
    	{
    		cnt=cnt+a[i]/x;
    	}
    	if(cnt>=k) return true;
    	return false;
    }
    int main()
    {
    	cin>>n>>k;
    	int l=0,r=0;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>a[i];
    		r=max(r,a[i]);
    	}
    	while(l<r)
    	{
    		int mid=(l+r+1)/2;
    		if(check(mid)) l=mid; //长度为mid可以切够k根
    		else r=mid-1;
    	}
    	cout<<l;
    	return 0;
    }
    
    • 0
      @ 2026-3-22 11:24:12
      #include<bits/stdc++.h>
      using namespace std;
      int a[1111110],n,k;
      bool check(int x)
      {
          int cnt=0;
          for(int i=1;i<=n;i++)
          {
              cnt+=a[i]/x;
          }
          return cnt>=k;
      }
      int main()
      {
          cin>>n>>k;
          int r=0,l=0;
          for(int i=1;i<=n;i++)  
          {
              cin>>a[i];
              r=max(r,a[i]);
          }
          while(l<r)
          {
              int mid=l+r+1>>1;
              if(check(mid)) l=mid;
              else r=mid-1;
          }
          cout<<l;
          return 0;
      }
      
      • 0
        @ 2025-9-7 11:09:26
        #include<bits/stdc++.h>
        using namespace std;
        const int N=1e5+10;
        int a[N];
        int k;
        int n;
        bool check(int x)
        {
            int cnt=0;
            for(int i=1;i<=n;i++)
            {
                cnt+=a[i]/x;
            }
            return cnt>=k;
        }
        int main()
        {
            cin>>n>>k;
            int l=0,r=0;
            for(int i=1;i<=n;i++)
            {
                cin>>a[i];
                r=max(r,a[i]);
            }
            while(l<r)
            {
                int mid=l+r+1>>1;
                if(check(mid)) l=mid;
                else r=mid-1;
            }
            cout<<l;
            return 0;
        }
        
        • 0
          @ 2025-4-5 10:49:45
          #include<bits/stdc++.h>
          using namespace std;
          const int N=1e5+10;
          int a[N];
          int k;
          int n;
          bool check(int x)
          {
          	int cnt=0;
          	for(int i=1;i<=n;i++)
          	{
          		cnt+=a[i]/x;
          	}
          	return cnt>=k;
          }
          int main()
          {
          	cin>>n>>k;
          	int l=0,r=0;
          	for(int i=1;i<=n;i++)
          	{
          		cin>>a[i];
          		r=max(r,a[i]);
          	}
          	while(l<r)
          	{
          		int mid=l+r+1>>1;
          		if(check(mid)) l=mid;
          		else r=mid-1;
          	}
          	cout<<l;
              return 0;
          }
          
          • 1

          Information

          ID
          950
          Time
          1000ms
          Memory
          256MiB
          Difficulty
          3
          Tags
          (None)
          # Submissions
          120
          Accepted
          39
          Uploaded By