又TM炸了
改到最后20分,思路和题解已经重合了,代码也差不多快一样了,但还是没过。
所以没什么好说的,哪位大佬帮我看看代码啊
#include
using namespace std;
int n,m,a[50005],l,r,mi,s,t,poi;
int dp[50005],o=10007,ans,b[50005],su[50005],ansn;
int main()
{
// freopen("stick.in","r",stdin);
// freopen("stick.out","w",stdout);
cin>>n>>m;
m++;
for(int i=1;i>a[i];
l=max(l,a[i]);
}
r=5000000;
while(r>l+1)
{
mi=(l+r)/2;
s=0;
t=0;
for(int i=1;imi)
{
t++;
s=0;
}
else
s+=a[i];
}
// cout<<t<<" "<<m<m)
{
l=mi;
}
else
{
r=mi;
}
}
r=l;
// cout<<l<<endl;
for(int i=1;ir)
{
poi++;
}
b[i]=poi;
}
for(int i=0;i<=n;i++)
{
su[i]=1;
}
// for(int i=0;i<=n;i++)
// {
// cout<<su[i]<<" ";
// }
// cout<<endl;
for(int i=1;i<=m;i++)
{
// for(int j=1;j<=n;j++)
// {
// cout<<su[j]<<" ";
// }
// cout<<endl;
for(int j=1;j<=n;j++)
{
dp[j]=(su[j-1]-su[b[j]-1])%o;
}
su[0]=0;
for(int j=1;j<=n;j++)
{
su[j]=dp[j]+su[j-1];
}
ans+=dp[n];
ans%=o;
}
cout<<r<<" "<<ans<<endl;
}