今天考了noip11年的一些題,這道題是day2 t1,考試的時候我只想出了o(n^2)的演算法,拿了七十分,下午改了兩個多小時,但是還是只寫了乙個o(nlogn+k)的演算法,但是在機房的老爺機上已經可以過了
鏈結在這裡 :
我們可以把每一種主題相同的客棧先用二維陣列存下來,同時記錄滿足費用<=p的客棧,再用o(n^2)掃瞄區間累加
1 #include 2 #include 3 #include 4 #include 5下來的時候,同機房a掉這道題的苣佬寫了st表,搞得我也寫了乙個來判斷區間之間是否存在滿足條件的咖啡店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 }
1 #include 2 #include 3 #include 4 #include 5using
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的時候用到了字尾和 想...