1. 程式人生 > >一週學習簡單總結(二)

一週學習簡單總結(二)


嚕嚕嚕……這週上了10+days的課啊QAQ
終於能回次家。。
再大致總結總結這周的東西吧。。
雖然好多題都忘得差不多了= =


1.bzoj3745
一段區間[l,r]的貢獻是min{a[l..r]}max{a[l..r]}(r-l+1)
給出序列A,求所有區間的貢獻和。

分析:自己YY了一個方法(然而考試裡並沒有寫出來QAQ)
首先一段區間[L,R]內部的貢獻+對外部的貢獻是一個子問題,
那麼可以想到分治。
考慮一下當前[L,R],L>R,那麼顯然不合法,貢獻為0.
首先取出Min和Max(最小值的位置和最大值的位置)
假定Min < Max,也就是下圖的情況:
這裡寫圖片描述


(只討論這個因為Max>Min的做法類似)
那麼先考慮內部的貢獻:顯然是[L,Min]裡作為左端點,
[Max,R]裡作為右端點,
然後隨意推個式子就可以計算了。
接著可以遞迴考慮[L,Min],[Max,R]和(Min,Max)
那麼對外部的貢獻呢?很顯然,左端點在(Min,Max)裡的
和右端點在(Min,Max)裡的情況漏下來了。
於是對於三段,我們要考慮[L,R]對它的影響,
也就是跨越Min或者Max的貢獻。
同樣隨意推導一個式子就好了。
當然還有個更簡單的做法……百度這題原題題解即可。

2.一個合法序列的定義是,對於任意i,3<=i<=m,
(
aiai2)(ai1ai2)<0

則這個長度為m的序列合法。
給出一個n,(n<=105000),求m<=n的總合法序列個數。
個數會很大,mod 10^9+7即可。

分析:找找規律吧……或者推推。。
用f(i)表示對於i的答案,
f(i)=f(i1)2+(i1)(i2)
這個式子隨意推個通項式,就是:
2n+1n2n2
n很大,對於n2n2,直接把n取模即可,
而對於2n+1,用一下尤拉定理,取模10^9+6即可。

3.給出分子分母的範圍[1,n],求所有最簡分數中,
第K大的分數是誰(x/y的格式)

分析:其實我不會啊= =
一開始考慮過二分,,卻沒想到這是正解。
因為感覺有點麻煩?
一直以為是可以暴力找的,然後打個尤拉函式求和,
發現K可以達到12億+……
於是……看上去就只能二分了
並不會去判定,這是個值得思考的問題ovo。

4……沒有4辣!似乎沒什麼好說的了QAQ

這周……怎麼說呢。。狀態逐漸有一點點,但是自己感覺不太夠。
noip不會考很難的東西,但是說不定會有部分分,
主要就是自己的思維不夠好,
但是又沒有時間去培養了。
所以最後只能放平心態,儘量做到最好就好了。
像天天愛跑步這種題,就得學會騙分。
還有對拍……千萬不能忘記。
真的不能再浪啦!
不想滾粗上文化課去啊QAQ