zoukankan      html  css  js  c++  java
  • 训练1-L


    n个人一起排队接水,第i个人需要ai的时间来接水。
    1 <= n <= 1000
    1 <= a,i<= 1000
    同时只能有一个人接水,正在接水的人和没有接水的人都需要等待。
    完成接水的人会立刻消失,不会继续等待。
    你可以决定所有人接水的顺序,并希望最小化所有人等待时间的总和。
    Input
    第一行一个整数n
    接下来n行,每行一个整数表示ai
    Output
    一行一个整数,表示所有人等待时间的总和的最小值
    Sample Input
    3
    1
    2
    3
    Sample Output
    10
    #include<stdio.h>
    int main()
    {
    
    
    		int a[1000],n,i,j,max,t,sum=0;
    		scanf("%d",&n);             //思路是花费时间最多的人排最前面,依次类推,然后计算出时间即可
    		for(i=0;i<n;i++)
    		scanf("%d",&a[i]);
    		for(j=n;j>1;j--)            //对数组排序,这里用的是选择排序,只要排序就行
    		{
    			max=0;
    			for(i=1;i<j;i++)
    			if(a[i]>a[max])
    			max=i;
    			if(max!=j-1)
    			{
    				t=a[max];
    				a[max]=a[j-1];
    				a[j-1]=t;
    			}
    		}
    		for(i=n,j=0;i>0&&j<n;i--,j++)
    		sum+=i*a[j];
    		printf("%d
    ",sum);
    	
    }
    之前做过类似的,几乎一样,没怎么改就拿过来了,很简单

    ...

  • 相关阅读:
    Vue 中常见性能优化
    简单模板引擎实现
    函数柯理化
    url 解析
    快排
    防抖节流实现
    call、apply、bind 实现
    深克隆
    数组去重
    eventEmitter 简单实现
  • 原文地址:https://www.cnblogs.com/aerer/p/9931079.html
Copyright © 2011-2022 走看看