NOIP2011 提高組 選擇客棧

2022-04-29 06:15:09 字數 1627 閱讀 9466

今天考了noip11年的一些題,這道題是day2 t1,考試的時候我只想出了o(n^2)的演算法,拿了七十分,下午改了兩個多小時,但是還是只寫了乙個o(nlogn+k)的演算法,但是在機房的老爺機上已經可以過了

鏈結在這裡 : 

我們可以把每一種主題相同的客棧先用二維陣列存下來,同時記錄滿足費用<=p的客棧,再用o(n^2)掃瞄區間累加

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;

6const

int n=200002;7

const

int m=52;8

intn,k,p;

9struct

datajd[n];

13int

f[m][n],num[m];

14int z[n],top=0;15

bool

vis[n];

16long

long ans=0;17

bool check(int l,int

r)18

23void

cl()

2435}36

intmain()

3747

cl();

48 printf("

%lld

",ans);

49return0;

50 }

下來的時候,同機房a掉這道題的苣佬寫了st表,搞得我也寫了乙個來判斷區間之間是否存在滿足條件的咖啡店

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;

6const

int n=200010;7

const

int m=52;8

intn,k,p;

9struct

datajd[n];

13int

f[m][n],num[m];

14int z[n],top=0;15

int mx[n][18

],lg[n];

16int

vis[n];

17long

long ans=0

;18 inline int

read()

1926 inline void

st()

2735 inline int rmq(int l,int

r)36

40 inline void

cl()

4158

else ++tail;

59if (head==top||head==top+1) break;60

if (tail==top+1)61

65}66}

67}68int

main()

6979

st();

80cl();

81 printf("

%lld

",ans);

82return0;

83 }

NOIP2011提高組(選擇客棧)

題目大意 中文題。就不解釋了 題目思路 看了其他巨巨的blog寫的,dp思路 include 時間複雜度o n 空間複雜度o 5n include include include include include include include include include include incl...

NOIP 2011 選擇客棧

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

NOIP2011選擇客棧

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