學習筆記 day3 一些雙指標的題

2022-05-19 02:04:32 字數 1027 閱讀 2262

參考部落格:

序列,非負,問和不小於\(s\)的最短子串的長度,雙指標掃瞄\(o(n)\)複雜度。

類似上一題,找最短的區間使其包含\([1,m]\)的整數。

給乙個序列,詢問區間和小於\(t\)的子區間個數,\(n\leq 2e5\)。

有\(s_r-s_,對於每個\(s_r\)即查詢有多少個\(l\)滿足\(s_>s_r -t\),可以直接暴力地寫個動態開點的值域線段樹(或者對所有\(2n\)個數進行離散化寫普通的線段樹)。

另外這裡還可以這麼轉化:考慮對區間進行分治,即\([l,r]\)內有多少個\(p,q(p,不難想到這樣的數對的個數來自於\([l,mid],[mid+1,r]\)的答案再加上跨越\(mid\)的區間的答案,前面兩個直接遞迴計算,中間這一段類似歸併排序。

這裡稍微把\(l-1,r\)轉化成了\(p,q\)以避免\(s\)排序後出現的一些問題(\(s_\)可能會取到不正確的位置)

上古cf,大意是\((0,0)\)處有乙個炮台,現在打出\(n\)個炮彈,每個炮彈速度都是\(v\),夾角\(\alpha\in(0,\frac)\),有\(m\)堵垂直\(ox\)軸的牆,詢問每個炮彈最後停在那裡(只要撞到牆或者地就停下來),\(n\leq 10^4,m\leq 10^5\)。

因為是很老的題,其實直接寫\(o(nm)\)的暴力也卡得過去(

不過還是有些性質可以看看:利用一些高中物理知識可以很容易注意到單調性。(速度一定的情況下斜拋)

比如我們可以算出來拋物線的軌跡\(\beginy=x\tan \alpha -\fracx^2\end\),對應的零點除了\(x=0\)還有乙個\(x=\frac\sin(2\alpha)\),這個東西在\(\alpha\in(0,\frac)\)內是單調遞增的,也就是角度越大拋得越遠。

同時最高點的縱座標也能算出是\(\beginy_m=\frac=\frac(1-cos(2\alpha))\end\),也是單調的,那這題就很愉快了,對炮彈按照角度從小到大排序,對於一堵牆來說,如果角度小的能過,那麼角度大的一定能過,雙指標掃瞄炮彈和牆。

時間複雜度\(o(n\log n+m\log m)\)。

丹的Python學習筆記Day3

20160910 今天上班不太忙,摸魚 1.python可以處理的資料型別 整數,運算結果永遠是精確的 包括除法 浮點數,注意,此處的e代替10,用來表示科學計數法,如2e2 2 2 2,且浮點數運算有四捨五入的誤差 字串布林值 2.特殊符號的表示 和 是一種表示方式,如果想要輸出符號本身,對於 可...

目標檢測中的一些指標 學習筆記

1 參考 用人臉識別做乙個例子,tp true positive,目標區域有人臉,返回目標區域檢測到人臉 fn false negative,目標區域有人臉,返回目標區域沒有檢測到人臉 fp false positive,目標區域沒有人臉,返回目標區域檢測到人臉 tn true negative,目...

小學期 Day3 課程作業要求 一些編譯優化命令

昨天寫了第乙個lab,沒來得及更新,今天追更,第一次用csdn的markdown,有點意思。1 parallel optimization basics 並行優化 程式型別 計算 computing 密集型 io密集型 並行型別 指令級 instruction level simd 通過調編譯器引數...