noip寫題心得 選擇客棧題解

2021-07-16 22:53:43 字數 1268 閱讀 6025

這題的話是一道好題,可以有非常多的解法。我們先來分析一下題目。

很明顯,看完題目後第乙個反應就是搜!搜!搜!然而發現搜尋肯定**的,所以只能另尋他法。

其實第乙個要做的事情,就是先把色調這個東西忽略掉來思考問題。因為實際上,所有的客棧的選擇遵循的第一法則就是同一色調。在處理的時候完全可以分色調來處理,但是這會很不方便,但這並不妨礙我們思維。所以我們可以先把所有的客棧都看成是同一種顏色的(以下的所有分析都忽略色調,之後再把色調加進來)。

其次。我們知道客棧的選擇第二法則就是兩兩客棧之間有客棧的咖啡館的最低消費小於p。也就是說,對於每乙個客棧i,只要找到i之前的第乙個最低消費小於p的客棧g,那麼從第1到第u個客棧都可以和第i個客棧組合選擇。這是要轉過來的第二個彎。還有一點切記,不要對於每乙個i都往前搜一遍然後往後搜一遍。這樣的話很明顯重複了一遍。如果對於每個客棧i只考慮與i之前的客棧可否與其配對選擇。那麼就剛好不會重複。同時又可以使用遞推。這一點也要注意

然後吧問題轉化到這裡,就可以開始進行列方程了。這裡牽扯到了分類。一開始其實並不知道如何分類,但是問題的關鍵就是這個g的位置,所以肯定要求的就是g與i的關係咯。

①  當g=i時,也就是i本身最低消費小於p。這時可以配對的客棧數目為i-1,因為之前的所有客棧都可以與i配對

②  當g=i-1時,實際上可配對的數目仍然是i-1,因為之前的所有客棧到i都會夾著u

③  當g=i-2時,這時候第i-1個客棧不可以算進來。所以可配對數目是i-2

④  當g=i-n時,這時候第i-n+1到i-1個客棧不可以算進來,所以可配對的數目是i-n

這樣的話,如果色調全部相同,那麼我們就可以解出這道題了。

然而加進了色調的話,就不太一樣了。我們首先要預處理的乙個陣列g[i],表示的是與在1~i內最低消費小於p而編號最大的那個。

接下來兩種辦法,第一種分色系處理,會比較慢,第二種則用f[i]記錄在1~i-1之間與i色調相同的編號最大的那個。

還有乙個,自然就是把1~i-1的相同色調個數全部統計出來的c[i]。

注意,這裡能夠得到這些陣列,是因為之前的單色調情況下要用到的東西進而才得到這些陣列的。

這時,如果g[i]在f[i]到i之間,那就好辦此時的話全部可以配對,即ans[i]=c[i]

但是如果g[i]在f[i]之前的話呢。

模擬之前的思考,如果g[i]在f[i]之前的話,那麼從f[i]到i沒有任何乙個客棧可以和i配對,包括f[i]本身。而在f[i]之前的任意乙個客棧ξ,如果可以和f[i]配對的話,那麼ξ到f[i]之間必然有乙個δ最低消費小於p。而f[i]這樣,基於這兩點,就可以進行遞推,從而出解了

NOIP 2011 選擇客棧

奇奇怪怪的題目。奇奇怪怪的演算法。題目描述 description輸入描述 input description 共n 1 行。第一行三個整數 n,k,p,每兩個整數之間用乙個空格隔開,分別表示客棧的個數,色調的數目和能接受的最低消費的最高值 接下來的 n 行,第i 1 行兩個整數,之間用乙個空格隔開...

NOIP2011選擇客棧

題目分析 這是一道比較好玩的題目,情景感比較強。而問題的實質就是 1 將同種顏色的客棧進行處理。2 對於乙個客棧,它有兩種情況,費用超過p 費用不超過p。3 超過p的找之後相同顏色且費用不超過p的。4 不超過p的與之後相同顏色的隨意組合。既然是批量處理,自然想到了字首和。處理3的時候用到了字尾和 想...

Noip2011 選擇客棧

麗江河邊有 n 家很有特色的客棧,客棧按照其位置順序從 1 到 n 編號。每家客棧都按照某一種色調進行裝飾 總共 k 種,用整數 0 k 1 表示 且每家客棧都設有一家咖啡店,每家咖啡店均有各自的最低消費。兩位遊客一起去麗江旅遊,他們喜歡相同的色調,又想嘗試兩個不同的客棧,因此決定分別住在色調相同的...