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

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

【hdoj_1050】Moving Tables

2019-11-08 02:16:19
字體:
來源:轉載
供稿:網友

題目鏈接

http://acm.hdu.edu.cn/showPRoblem.php?pid=1050

題意為:

為了敘述方便,把一個房間里面的桌子移動到另一個房間稱為一個移動,給出若干個要求完成的移動,任意兩個移動僅在移動路線不相交的情況下可以同時進行,求出移動所需花費的最小次數(時間).

注意:

出現有"對門"的路線,不能同時移動,例如,[2,4]和[3,5]不能同時進行,因為3和4對門.

路線重疊:

凡是路線重疊的兩個移動,不能同時進行.路線重疊例如,[1,4]和[2,5]路線重疊,[2,4]和[3,5]路線重疊,[4,2]和[5,3]路線重疊.根據題意,可以看出,移動的順序對于路線是否重疊沒有影響.另外,對門的位置可以看做一個位置.

思路:將每一條移動路線看做一條直線,假設所有的移動同時進行,則會有多個地方出現直線重疊的情況,求出重疊的最大層數(有多少條直線在同一處重疊最多)

C++代碼如下

#include<iostream>#include<algorithm>using namespace std;int main(){	int T;	cin >> T;//測試次數 	int start,end;//每次移動的起始位置 	while(T--)	{		int n;//每次測試中,移動的個數 		cin >> n;		int a[200] = {0};//記錄每個位置的重疊的次數,開始都為0.						//一共有400個房間,由于對門位置看做一個位置,所以共有200個位置. 		for(int i=0;i<n;i++)//針對每個移動而言. 		{			cin >> start >> end;						start = (start+1)/2;			end = (end+1)/2;//這樣處理之后,對門位置變為一個位置.可以把兩個 + 同時改為 - 也正確. 						int max = std::max(start,end);//為了下面循環而作的處理 			int min = std::min(start,end);			for(int k=min;k<=max;k++)//看看這個移動為200個位置上的重疊次數的貢獻是多大. 				a[k] ++;			}		int max = -1;		for(int i=0;i<200;i++)//找出數組a中最大值 		{			if(a[i]>max)			{				max = a[i];			}		}		cout << 10*max << endl;	}		return 0;}參考:

http://www.cnblogs.com/ahu-shu/p/3551829.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仙居县| 余干县| 武强县| 墨竹工卡县| 银川市| 台北县| 连云港市| 北辰区| 井冈山市| 庐江县| 新兴县| 保定市| 达拉特旗| 滨海县| 叶城县| 贺兰县| 荣成市| 济南市| 吴桥县| 缙云县| 万盛区| 察雅县| 兰西县| 浦北县| 德庆县| 鄂托克旗| 光山县| 义马市| 南平市| 龙海市| 赤壁市| 郎溪县| 阿拉尔市| 松江区| 霍山县| 汶川县| 嘉义县| 南汇区| 长汀县| 永吉县| 西林县|