3 条题解

  • 2
    @ 2024-8-13 21:46:31

    可以理解为还是只有1个人接水,但是他接的时候也帮后面R-1个人接水了

    #include<bits/stdc++.h>
    #include<map>
    using namespace std;
    int j,k,p[500],p2[500],rp=0,min1=10000000;
    int n,m,ans;
    int num;
    
    int main()
    {
    	cin>>n>>m;
    	k=n;//现在有n个人等待
    	for(int i=1;i<=n;i++)
    	{
    		cin>>p[i];
    	}
    	sort(p+1,p+n+1);
    	for(int i=1;i<=n;i++)
    	{
    		ans+=p[i]*k;//ans+等待人数*等待时间
    		for(int j=i+1;j<=i+m-1;j++)
    		p[j]-=p[i];//帮后人接水
    		k--;//接完我走啦当然少了一个人
    	}
    
    cout<<ans;
    
    
    
    }
    
    
    • 2
      @ 2022-11-20 17:32:09
      using namespace std;
      int s[101]={0};
      int a[101]={0};
      int main()
      {
      	int n,r;
      	cin>>n>>r;
      	for(int i=1;i<=n;i++)
      	{
      		cin>>a[i];
      	}
      	sort(a,a+n+1);
      	int j=0,min1=0;
      	for(int i=1;i<=n;i++)
      	{
      		j++;
      		if(j==r+1) j=1;
      		s[j]+=a[i];
      		min1+=s[j];
      	}
      	cout<<min1;
      	return 0;
       }
      

      不多说了基础题 所用时间最长的人放最后一定是最优的 所以排序就行了

      • 1
        @ 2024-12-21 18:41:38

        废话不多说,直接上程序

        #include<bits/stdc++.h>
        using namespace std;
        int main()
        {
          freopen("water1.in","r",stdin);
          freopen("water1.out","w",stdout);
          int n,m,sum=0;
          cin>>n>>m;
          int a[n],b[m];
          for(int i=0;i<n;i++) cin>>a[i];
          for(int i=0;i<m;i++) b[i]=0;
          sort(a,a+n);
          for(int i=0;i<n;i++){
          	sort(b,b+m);
          	sum+=b[0];
          	b[0]+=a[i];
          }
          for(int i=0;i<m;i++) sum+=b[i];
          cout<<sum;
          return 0;
        }
        
        

        看完点赞(⊙o⊙)

        • 1

        信息

        ID
        441
        时间
        1000ms
        内存
        256MiB
        难度
        4
        标签
        递交数
        65
        已通过
        31
        上传者