1233:接水问题

【算法分析】

接水顺序确定,接水规则确定,整个接水流程就已经确定了,不需要通过算法决定任何事情,这是一个考察模拟的题。设数组s,s[i]表示第i个水龙头可以使用的时刻。s数组中最小值的下标为k,那么当前情况下一定是第k号水龙头先给上一个人接完水后空了出来,下一个人就该在第k号水龙头接水。假设第i人要接水,取s数组中最小值的下标为k,那么第x人就该在第k个水龙头接水,第k号水龙头的可以使用时刻增加a i ,即s[k] += a[i]。遍历每个人,确定每个人接水的水龙头位置,而后遍历s数组,取其中的最大值,即为所有同学都接完水的时刻。


【代码】

#include<iostream>
#include<cstdio>
#include<cstring> 
#include<algorithm>
#define INF 0x3f3f3f3f

using namespace std;
const int N = 10010;
int s[110],a[N];
int main(){
    int t,n,k;
    cin>>t>>n;
  for(int i=1;i <= t;i++)
  cin>>a[i];
  for(int i=1;i <= t;i++)
   {
       int mini = INF;
       for(int j=1;j<=n;j++)
       if(s[j] < mini)
       {
           mini = s[j];
           k = j;
        } 
        s[k] += a[i];
   }
   int maxi = -INF;
    for(int i=1;i<=n;i++)
    if(s[i] > maxi)
      maxi = s[i];
      cout<<maxi<<endl; 
    return 0;
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值