8 条题解

  • -1
    @ 2022-10-18 22:32:30
    #include <iostream>
    #include <string.h>
    using namespace std;
    const int N = 1e5 + 10;
    const int INF = 0x3f3f3f3f;
    long long n , k;
    int a[N];
    bool cheak(int x)
    {
    	int ans = 1 , sum = 0;
    	for(int i = 1 ; i <= n ; i++)
    	{
    		sum += a[i];
    		if(sum > x)
    		{
    			ans++;
    			sum = a[i];
    		}
    	}
    	return ans <=  k;
    }
    int main()
    {
    	cin >> n >> k;
    	int l , r;
    	l = 0 , r = 0;
    	for(int i = 1 ; i <= n ; i++)
    	{
    		cin >>a[i];
    		r += a[i];
    		l = max(l , a[i]);
    	}
    	while(l < r)
    	{
    		int mid = l + r >> 1;
    		if(cheak(mid))
    			r = mid;
    		else
    			l = mid + 1;
    	}
    	cout << r << endl;
    	return 0;
    }
    

    信息

    ID
    360
    时间
    1000ms
    内存
    512MiB
    难度
    6
    标签
    递交数
    313
    已通过
    97
    上传者