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

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

uva 7219 Problem on Group Trip (優先隊列)

2019-11-08 03:17:20
字體:
來源:轉載
供稿:網友

題意:

三種洗漱房s1,s2,s3,n個人,每個人按1到3的順序排隊等候洗漱,給出每人在這三個洗漱房需要多少時間洗漱,并且排隊過程中,編號小的先洗漱,問需要多少時間所有人完成洗漱

解題思路:

用優先隊列存儲在3個房間的等候隊列,如果洗漱完了,就加入到下一個隊列,注意如果兩個相鄰隊列隊首的人同時完成洗漱,比如s1,s2房間兩人同時,完成,就先讓s1那人先進入s2房間排隊,然后再s2隊列中編號最小的人去洗漱. 代碼寫的有亂,寫了一個多小時,最后差一秒,交上ac,qaq.

代碼:

#include <bits/stdc++.h>using namespace std;const int maxn=105;struct p  {      int tim[4];           int x;      bool Operator <(const p &a)const      {          return a.x<x;      }  }now[4], b[maxn];int main(){    int t;    cin>>t;    int e=1;    while(t--)    {	int n;	scanf("%d", &n);	PRiority_queue<p>a[4];  	int i, j;	for(i=0; i<3; i++)	{	  now[i].tim[0]=now[i].tim[1]=now[i].tim[2]=0;	}	for(i=0; i<n; i++)	{	  scanf("%d %d %d", &b[i].tim[0], &b[i].tim[1], &b[i].tim[2]);	  b[i].x=i;	  if(b[i].tim[0]!=0)	  {	     a[0].push(b[i]); 	  }	  else if(b[i].tim[1]!=0)	  {	     a[1].push(b[i]);	  }	  else if(b[i].tim[2]!=0)a[2].push(b[i]);	}	int book[5];	memset(book, 0, sizeof(book));	int ans=0;	for(i=0; i<3; i++)	{	   if(!a[i].empty())	   {	     now[i]=a[i].top();	 //    printf("%d ", now[i].x);	     a[i].pop();	   }	}	printf("Case #%d: ", e++);        while(now[0].tim[0]!=0||now[1].tim[1]!=0|| now[2].tim[2]!=0)	{	    	int mi=104, x=0;		for(i=0; i<3; i++)	{	 if(now[i].tim[i]!=0)	 {		 if(now[i].tim[i]<mi)		 {			mi=now[i].tim[i];			x=i;		 }	 }	}	ans+=mi;		if(mi==0)break;		//printf("now");	memset(book, 0, sizeof(book));	for(i=0; i<3; i++)	{	  if(now[i].tim[i]>0)now[i].tim[i]-=mi, book[i]=1;	  	 // printf("%d ", now[i].tim[i]);	   	    if(now[i].tim[i]==0 && book[i]==1)	    if(i<2) 	    {		if(now[i].tim[i+1]!=0) a[i+1].push(now[i]);		else if(i==0 && now[i].tim[i+2]!=0)a[i+2].push(now[i]);			    }	}	for(i=0; i<3; i++)	{	  if(now[i].tim[i]==0)	  {	    if(!a[i].empty()) {		    now[i]=a[i].top();		    a[i].pop();	    }	  }	}	//printf("/n");	}	printf("%d/n", ans);    }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阜宁县| 大足县| 辉南县| 长汀县| 秭归县| 资阳市| 厦门市| 鄂伦春自治旗| 梅州市| 隆尧县| 来安县| 日喀则市| 九台市| 三河市| 孝义市| 深水埗区| 博兴县| 菏泽市| 宝清县| 河津市| 保定市| 凤冈县| 焦作市| 都江堰市| 蓝山县| 米脂县| 西峡县| 蓬溪县| 南皮县| 浮梁县| 台东市| 木兰县| 渝中区| 策勒县| 景谷| 奎屯市| 成都市| 涟水县| 江北区| 神农架林区| 汨罗市|