国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

算法提高 排隊打水問題 無聊刷個水題

2019-11-10 21:58:28
字體:
來源:轉載
供稿:網友

算法提高 排隊打水問題 時間限制:1.0s 內存限制:256.0MB 提交此題 問題描述   有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1、t2………..tn為整數且各不相等,應如何安排他們的打水順序才能使他們總共花費的時間最少? 輸入格式   第一行n,r (n<=500,r<=75)   第二行為n個人打水所用的時間Ti (Ti<=100); 輸出格式   最少的花費時間 樣例輸入 3 2 1 2 3 樣例輸出 7

數據規模和約定   其中80%的數據保證n<=10

首先 等的時間最短是這個題最重要的,那么就需要 讓接水時間最小的人放在前面, 之后,要讓接水的人等的時間最短

創建兩個數組 ,一個代表接水的等待時間 ,一個代表人 接水的人所在的水龍頭的等待時間加上去 然后后面的人優先選擇等待時間最少的水龍頭去接水。

一共進行n次排序,每次的為r*lg(r) 所以復雜度為n*r*lg(r) 數據最大為500*75*9 很小- -

#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <map>using namespace std;int d[505];//等待的時間int x[505];//接水的人int main(){ int n,r; while(cin>>n>>r) { int sum=0; memset(d,0,sizeof(d)); for(int i=0;i<n;i++) { cin>>x[i]; } sort(x,x+n); for(int i=0;i<n;i++) { sort(d,d+r);//把等待時間最小的水龍頭排到前面 //for(int j=0;j<r;j++)cout<<d[j]<<' ';cout<<endl; sum+=d[0]+x[i]; d[0]+=x[i]; // for(int j=0;j<r;j++)cout<<d[j]<<' ';cout<<endl<<sum<<endl;cout<<endl<<endl; } cout<<sum<<endl; }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沐川县| 儋州市| 若尔盖县| 嵊泗县| 丰县| 婺源县| 灵台县| 曲周县| 崇仁县| 邓州市| 东源县| 祁东县| 偃师市| 明光市| 顺义区| 临漳县| 罗定市| 儋州市| 利辛县| 乌苏市| 锦屏县| 抚顺县| 马尔康县| 岳西县| 莱西市| 屏东市| 栾川县| 施秉县| 水富县| 东乌珠穆沁旗| 利辛县| 丹阳市| 东明县| 石渠县| 绵竹市| 沙湾县| 盘锦市| 通城县| 穆棱市| 呼伦贝尔市| 财经|