@[Mr_耿](/space/show?uid=109642) 想法是对的,但是每个时间点每个时间点操作的话,一定是会超时的。
每次选m个大于0的减一操作的次数是选的m个中最小的那个的时间,实际上可以直接操作一次,直接用选的m个减去m个中最小的那个的时间。
我一朋友今晚做这题,代码几乎和你一样23333
by HoshiuZ @ 2019-11-03 23:44:34
@[Yuzuriha_Inori](/user/71936) 2333,因为不想思考太多,就打了一个纯模拟,知道问题在哪里了23333
by xiao_gy @ 2019-11-09 17:01:03
```cpp
#include<bits/stdc++.h>
using namespace std;
int w[10005],sum[105];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>w[i];
}
if(m>n)
{
int ans=0;
for(int i=1;i<=n;i++)
{
ans=max(ans,w[i]);
}
cout<<ans<<endl;
return 0;
}
for(int i=1;i<=n;i++)
{
int s=INT_MAX,k;
for(int j=1;j<=m;j++)
{
if(sum[j]<s)
{
s=sum[j];
k=j;
}
}
sum[k]+=w[i];
}
int ans=0;
for(int i=1;i<=m;i++)
{
ans=max(ans,sum[i]);
}
cout<<ans<<endl;
return 0;
}
```
by 陈斯齐 @ 2020-02-16 14:45:54