排队打饭
排隊(duì)打飯
Time Limit: 1000ms?? Memory limit: 65536K??有疑問(wèn)?點(diǎn)這里^_^
題目描述
一天中午,有N個(gè)學(xué)生來(lái)到食堂買(mǎi)飯,他們需要排成了一個(gè)一字隊(duì)伍并按順序打飯,現(xiàn)在已經(jīng)知道了每個(gè)人買(mǎi)飯的時(shí)間,現(xiàn)在食堂的管理員希望知道他們按照怎樣的順序買(mǎi)飯能夠使得所有人等待的時(shí)間總和最小(每個(gè)人等待的時(shí)間?=?排在他前面的人的打飯時(shí)間和+自己打飯的時(shí)間)。
輸入
輸入的第一行包含一個(gè)整數(shù)T(T≤30)表示數(shù)據(jù)組數(shù),每組數(shù)據(jù)包括兩行,第一行為一個(gè)整數(shù)N表示人數(shù),第二行為N個(gè)整數(shù)表示每個(gè)人買(mǎi)飯所需要的時(shí)間,所有整數(shù)均不超過(guò)100。輸出
每組數(shù)據(jù)輸出一行,包括一個(gè)整數(shù),表示所有人等待時(shí)間總和的最小值。示例輸入
251 2 3 4 5545 10 48 37 9示例輸出
35334提示
來(lái)源
示例程序
#include<stdio.h> int main() { int i,j,n,m,k,t,a[101],b,c[101],l; scanf("%d",&n); for(l=0;l<n;l++) { scanf("%d",&m); for(j=0;j<m;j++) scanf("%d",&a[j]); for(i=0;i<m-1;i++) { k=i; for(j=i+1;j<m;j++) if(a[k]>a[j]) k=j; if(k!=i) { t=a[k]; a[k]=a[i]; a[i]=t; } } t=0; for(i=0;i<m;i++) { k=a[i]; if(i==0) { t=k; c[i]=k; } else { t+=k; c[i]=t; } } b=0; for(j=0;j<m;j++) b+=c[j]; printf("%d\n",b); } }總結(jié)
- 上一篇: 阿里云HttpDns接入
- 下一篇: html中label如何居中,怎么让la