泛刷水題記17 12 27

2021-08-14 03:27:05 字數 2165 閱讀 6711

shoi的題目***高啊,感覺都是些不錯的題目……(我都不會做)

題意:給定乙個序列,在模

p 意義下,茲瓷區間對給出的乙個常數

c取冪(原來是ai

,變成ca

i ),以及區間求和的操作,注意

p 不一定是質數,ai

,c≤p

≤108分析:一看到模意義,我們馬上想到指數迴圈節,由於am

≡am%

φ(p)

+φ(p

)(modp),

m≥φ(

p)我們會發現,這個定理大致意思就是說,找另乙個

n ,使得n≡

m(modφ(p

))那麼進一步的,再套幾層下去,就會相當於模φ(

φ(p)

),φ(

φ(φ(

p)))

,⋯很明顯o(

logn

) 次之後就有

m<

模數,就是不用修改了

然後和區間取模就很類似了,利用線段樹維護暴力修改和區間求和,每次暴力修改,如果發現不用修改了(對原來指數的模已經相當於模

1 了),那就不改了,否則暴力遞迴下去修改

直接做是o(

mlog

nlog2p

),因為還有快速冪的複雜度,但是我們會發現我們可以將快速冪分成兩段預處理(就像usaco某道叫牛計數的題目),對

c 預處理,對

c10000

預處理,然後就做完了,複雜度o(

mlog

nlogp)

,這是很有用的技巧!

題意:從nk

個物品裡選模

k 餘

r個物品,問方案數模p

分析:容易看出,如果我們設乙個f(

i,j)

表示模k

意義下前

i個里選餘

j 個物品,那麼很明顯可以有f(

i,j)

=f(i

−1,j

)+f(

i−1,

j−1)

,那麼就可以矩陣乘了

但是還有更快的做法,就是考慮到f(

2n,t

)∑i+

j=tf

(n,i

)×f(

n,j)

就是列舉前一段和後一段選的個數,時間複雜度o(

k2logn)

# include 

# include

# define mem(x,v) memset(x,v,sizeof(x))

# define n 1000000000

# define k 50

typedef

long

long ll;

ll p;

int k;

struct mvec

ll &operator(int i)

const ll &operator(int i) const

};inline mvec &operator%=(mvec &a, int k)

return a;

}inline mvec operator*(const mvec &a, const mvec &b)

}res %= k;

return res;

}inline mvec pow(mvec a, ll n)

int main()

題意:平面上給一些點,問最小橢圓覆蓋,其中橢圓長軸和短軸的比是給出的乙個

λ ,同時長軸要求固定在與

x 軸夾

θ角的方向上

分析:這裡轉化的思路還是很茲瓷的……畢竟我們還是會最小圓覆蓋的

考慮將整個圖轉到長軸的方向上,然後將整個圖短軸方向上擴大

λ (防止精度損失),然後就還是乙個最小圓覆蓋辣……

最小圓覆蓋用隨機增量法很好寫……所以是期望o(

n)的題意:給一條射線,每次碰到一條線段

i ,,就會發生反射,反射角

φ與入射角

θ 之間滿足φ=

λiθ ,問前

10 次碰到哪些線段,線段數量不多於

100

分析:這是一道暴力題……直接暴力判斷肯定不會超,而且資料範圍其實可以往上放得多很多的qaq

cf水題記錄

記錄幾道水題 第一題題目鏈結 題目大意 給 n和m 問1 n裡面m的倍數中個位數的和是多少.某場div3的c題.n m肯定是1 n裡面m倍數的個數.那麼這些數裡面各位數的和怎麼算呢?分析一下可以知道最多10個數後就會進入迴圈.因為0 9只有10個數嘛.可以手動先把每個數的迴圈陣列算出來.當然這是最直...

OI刷題記錄

2014 4 18 poj3264 bzoj1699 balanced lineup rmq 2014 4 19 bzoj1012 jsoi2008 最大數maxnumber noi2004 鬱悶的出納員 bzoj3224 tyvj 1728 普通平衡樹 2014 4 20 bzoj1862 105...

面試刷題記錄

寫一段 判斷乙個包括 的表示式是否合法 注意看樣例的合法規則。給定乙個表示式a,請返回乙個bool值,代表它是否合法。測試樣例 a b 5 4 返回 true 測試樣例 a b 5 4 返回 false include vector include iostream using namespace ...