洛谷1311 選擇客棧 模擬

2021-09-09 08:54:04 字數 1118 閱讀 3953

暴力的分很容易拿到,然後在o(n3)方的情況下,用資料結構可以降到o(n2log(n))級別。然後我想到了乙個再降一級的優化,但是沒有敲——沒想到就是正解,而我旁邊的同學用了rmqac了。

last[color]用來表示color最近的一次相同色調的客棧的位置,now表示最近的一次合法的客棧的位置,cnt是到目前為止某color客棧的個數,sum是乙個暫時的輔助陣列。

線段樹超時之作

#include

#include

#define rg register

using

namespace std;

int n,k,p,b[

200001

],w[

200001

],t,ans,a[

600010];

inline

intminn

(int x,

int y)

void

aaa(

int l,

int r,

int d)

int mid=

(l+r)/2

;aaa

(l,mid,d*2)

;aaa

(mid+

1,r,d*2+

1); a[d]

=minn

(a[d*2]

,a[d*2+

1]);

}inline

intask

(int l,

int r,

int d,

int ll,

int rr)

intmain()

#include

#include

using

namespace std;

int n,k,p,color,now,ret,ans,sum[55]

,last[55]

,cnt[55]

;int

main()

printf

("%d"

,ans)

;}

洛谷 P1311 選擇客棧

原題 首先暴力如果寫的優秀,可以拿到60分,這裡介紹兩種暴力 40 include include include include include using namespace std int color 200010 cost 200010 int main printf d n ans k r...

洛谷P1311 選擇客棧

做法1 樸素模擬。考慮到此題有可模擬性,所以我們可以列舉i,j,分別為第乙個人住i和第二個人住j的情況,然後再列舉k,k即為兩者中間的點,判斷是否有value p的情況就可以了。做法2 有技巧的運用一些與組合數有關的知識。考慮咖啡館的每個地方所代表的方案,發現我們可以從這裡突破。在讀入時把每乙個點如...

洛谷P1311 選擇客棧

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