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 提交 狀態 討論版 題目描述 我想說這是一道簽到題,意思就是本次測試中最水的一道,不過我這樣說你真的願意相信我嗎?哈哈,題目是這樣的給你一下小數,然後請告訴我分別告訴我這個小數的迴圈節的迴圈次數 迴圈節以及...