暴力的分很容易拿到,然後在o(n3)方的情況下,用資料結構可以降到o(n2log(n))級別。然後我想到了乙個再降一級的優化,但是沒有敲——沒想到就是正解,而我旁邊的同學用了rmq
ac了。
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 表示 且每家客棧都設有一家咖啡店,每家咖啡店均有各自的最低消費。兩位遊客一起去麗江旅遊,他們喜歡相同的色調,又想嘗試兩個不同的客棧,因此決定分別住在色調相同的兩家...