55分,如何让前面的人做得少,求助
  • 板块P1281 书的复制
  • 楼主silv
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/3/7 11:25
  • 上次更新2023/11/5 02:21:27
查看原帖
55分,如何让前面的人做得少,求助
438480
silv楼主2021/3/7 11:25
#include<bits/stdc++.h>
using namespace std;
int m,k;long long sum;
long long ans;int p;
int a[501],b[501];
int cal(long long x)
{
	return sum/x;
}
int main()
{
	cin>>m>>k;
	for(int i=1;i<=m;i++)
	{
	cin>>a[i];
	sum+=a[i];
    }
    long long l=0;
    for(long long i=(1ll<<60);i;i>>=1)
    if(cal(ans+i)>k)ans+=i;
    ans++;
    int num=0;
    for(int i=m;i;i--)
    {
		if(num+a[i]>=ans&&l<k-1)
    	{
    		num=0;
    		b[i]=a[i];
    		l++;
		}
		else num+=a[i];
	    
	}
	cout<<1<<" ";
	for(int i=1;i<=m;i++)
	{
		if(b[i]!=0)
		{
			if(i!=1)
			{ 
			cout<<i-1<<endl;
			if(b[i]==a[i])
			cout<<i<<" ";
			} 
		}	
	}
	cout<<m;
	return 0;
} 
2021/3/7 11:25
加载中...