周賽一 1005 搬桌子

2021-07-06 08:05:57 字數 1417 閱讀 4820

description

協會為了更好宣傳演算法魅力,決定包下綜合教學樓5樓(吐槽:這麼高會有人來嗎?)進行講課。然而綜教5樓的每個教室裡都有不屬於這個教室的桌子,ccc大人的強迫症又發作了,要求我們把桌子還原。機智的慶慶一下子就知道還原這些桌子要花多少時間,但他想考考你們。已知綜教5樓的平面圖如圖,從房間i到房間j要花1min。求花費最小時間?

注意:只要移動路線沒有重合,可以同時移動。如:從1號移到6號,從397號移到400號,這兩次操作即可同時進行。

room1 room3 room5 …… room397 room399

corridor

room2 room4 room6 …… room398 room400

input

第一行輸入t,表示有t組用例;

每組用例第一行輸入n,表示要移動的桌子數量(0< n< 201);

每組用例接下來n行,每行有2個數s,t,代表桌子要從s號房間移到t號房間

output

輸出每組用例要花費的最小時間

sample input

3 4

10 20

30 40

50 60

70 80

2 1 3

2 200

3 10 100

20 80

30 50

sample output

1 2

3solution

貪心,用陣列room[401]記錄每個房間前的走廊被用過多少次,則答案即為max(room[i]);每掃瞄乙個點將陣列這個範圍內的值加1,注意,範圍的確定,若下限為偶數,則下限需減一,若上限為奇數,則上限需加1

code

#include

int main()

if(!(l&1)) l--;//左端點是偶數則其需減一,因為搬桌子時也會影響到左端點對面的房間,即第l-1個房間

if(r&1) r++;//右端點是奇數則其需加一,因為搬桌子時也會影響到右端點對面的房間,即第r+1個房間

for(int j=l;j<=r;j++)//區間[l,r]中所有房間的room值均加一表示這次搬運這些房間內都會被影響到

room[j]++;

}int ans=0;

for(int i=1;i<=400;i++)//找到room[i]的最大值即為答案

if(room[i]>ans)

ans=room[i];

printf("%d\n",ans);

}return

0;}

1 16 高一周賽總結

wtclwtcl!t3的簡單式子我推了半個小時才推正確額額額,導致沒時間做t2 t1 nkoj4312 飛行管制 題目大意 給定若干架飛機的原定起飛時間和延誤單位時間的代價,先要求在第k 1分鐘才能開始髮機,求最小代價。題解 應該是一道老題了,我感覺我見過的。反正話不多說,這個題直接維護乙個最小代價...

補題場 codeforece第一周周賽

傳送門 題意 狀態定義f i f 0 表示不選,f 1 表示選擇。狀態轉移f 1 f 0 a,f 0 f 1 a。最終答案為f 1 因為最後一位為加的答案肯定大於為減的。include using namespace std const int n 3e5 10 long long f 2 int ...

周賽 一道簽到題(kmp)

問題 a 一道簽到題 時間限制 2 sec 記憶體限制 128 mb 提交 61 解決 26 提交 狀態 討論版 題目描述 我想說這是一道簽到題,意思就是本次測試中最水的一道,不過我這樣說你真的願意相信我嗎?哈哈,題目是這樣的給你一下小數,然後請告訴我分別告訴我這個小數的迴圈節的迴圈次數 迴圈節以及...