想要免费测试点的私信我或评论区留言
话不多说,开整:
首先理解题意大概为:n个同学要结束,只有m个水龙头,每个同学接完后下一个同学马上补上,最后求最后一个人接完后用了多少时间(单位:秒)。观察数据范围,不大最多10000*100(s),所以暴力模拟就能过,不过暴力模拟可不是枚举,而是顺着题意模拟
所以代码为:
#include<bits/stdc++.h>
using namespace std;
int n,m,s;
int a[10100];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
int t=m+1;
while(t<=n+m){
for(int i=1;i<=m;i++){
a[i]--;
if(a[i]==0){
a[i]=a[t];
t++;
}
}
s++;
}
cout<<s;
return 0;
}
你以为没了?
哼!别低估我剑桥硕士的实力:
#include<bits/stdc++.h>
using namespace std;
int a[20005];
int b[20005];
int n;
int m;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;++i)
cin>>a[i];
for(int i=1;i<=m;++i)
b[i]=a[i];
for(int i=m+1;i<=n;++i)
{
sort(b+1,b+1+m);
b[1]+=a[i];
}
sort(b+1,b+1+m);
cout<<b[m];
return 0;
}
注意:这里++i和i++是一样的