Moving Tables(貪心演算法)
題目描述
著名的ACM公司租用了一幢樓的一層,其形狀如下。
整個樓層在走廊的北面和南面各有300個房間。最近公司制定了一個改變佈局的方案,包括在不同房間之間移動許多桌子。由於走廊狹窄,而且桌子都很大,只有一張桌子可以穿過走廊。為了提高工作效率,經理制定瞭如下方案:把一張桌子從一個房間搬到另一個房間可以在5分鐘內完成。當移動一張桌子從I房間搬到J房間時,房間I前面和房間J前面的走廊部分被使用了。因此,在每5分鐘,在不共用走廊的情況下,不同的移動方案可以同時進行。為了說明問題,經理舉例說明了可能發生的情況和不可能同時發生的情況。
對於每個房間,最多一張桌子要麼搬進去,要麼搬出去。現在,經理要計算移動給定的桌子所需的最短時間。你的工作是寫一個程式來解決經理的問題。
輸入
輸入包括T組測試用例,測試用例的數量M在輸入的第一行中給出。每組測試用例的第一行是一個整數N(1<=N<=200),N表示要移動桌子的數量,緊接著是N行,每行包括2個正整數S和T,分別代表一張桌子從S房間移動到T房間(一個房間的序號,在一組測試用例中最多出現一次)。從第N+3行開始,列出了剩餘的測試用例,格式和第一個測試用例相同。
輸出
輸出移動N個桌子所需要的最短時間,每個測試用例結果佔一行。
樣例輸入
3
4
10 20
30 40
50 60
70 80
2
1 3
2 200
3
10 100
20 80
30 50
樣例輸出
5
10
15
#include<bits/stdc++.h>
using namespace std;
int book[601];
struct node{
int b,e;
};
int main()
{
int T,M;
cin>>T;
while(T--)
{
int maxn=-999,maxt=-999;
memset(book,0,sizeof(book));
cin>>M;
node a[M];
for(int i=0;i<M;i++)
{
cin>>a[i].b>>a[i].e;
if(a[i].b>a[i].e)
swap(a[i].b,a[i].e);
maxt=max(maxt,a[i].e);
}
for(int i=0;i<M;i++)
{
for(int j=a[i].b;j<=a[i].e;j++)
{
book[j]+=5;
}
}
for(int i=0;i<=maxt;i++)
{
if(book[i]!=0)
{
maxn=max(maxn,book[i]);
}
}
cout<<maxn<<endl;
}
return 0;
}
相關文章
- 貪心演算法演算法
- 貪心演算法(貪婪演算法,greedy algorithm)演算法Go
- 貪心演算法Dijkstra演算法
- 學一下貪心演算法-學一下貪心演算法演算法
- 9-貪心演算法演算法
- 常用演算法之貪心演算法演算法
- 演算法基礎–貪心策略演算法
- 貪心演算法——換酒問題演算法
- 「演算法」貪心與隨機化演算法隨機
- 貪心
- 【LeetCode】貪心演算法–分發糖果(135)LeetCode演算法
- dfs與貪心演算法——洛谷5194演算法
- 貪心演算法篇——區間問題演算法
- 加油站問題(貪心演算法)演算法
- 演算法---貪心演算法和動態規劃演算法動態規劃
- 資料結構與演算法——貪心演算法資料結構演算法
- 反悔貪心
- Supermarket(貪心)
- 《演算法筆記》9. 培養貪心思維、貪心演算法深度實踐演算法筆記
- 貪心演算法之無重疊區間演算法
- leedcode-分發餅乾(貪心演算法)演算法
- Day28 貪心演算法part2演算法
- Day27 貪心演算法part1演算法
- Day31 貪心演算法part5演算法
- LeetCode解題記錄(貪心演算法)(二)LeetCode演算法
- LeetCode解題記錄(貪心演算法)(一)LeetCode演算法
- 貪心演算法有時也很有用 - hashnode演算法
- 貪心例題
- 貪心+搜尋
- leetcode:跳躍遊戲II(java貪心演算法)LeetCode遊戲Java演算法
- KuonjiCat的演算法學習筆記:反悔貪心演算法筆記
- 貪心演算法-找不重疊的區間段演算法
- 活動選擇問題理解貪心演算法演算法
- 汽車加油問題 SDUT OJ 貪心演算法演算法
- 貪心演算法——Huffman 壓縮編碼的實現演算法
- 貪心演算法與動態規劃的區別演算法動態規劃
- 使用貪心演算法解決集合覆蓋問題演算法
- HDU 5821 Ball(貪心)