HDU 5685 字首 逆元

2021-09-05 08:03:54 字數 617 閱讀 7530

題意:給出你雜湊值的計算方式,然後多次詢問子串的雜湊值。

題解:我們通過觀察雜湊值的計算式子就可以發現是連乘,又是多次詢問,因此我們可以想到打表的方式。字首積即可。ans

[a,b

]=dp

[b]d

p[a−

1]

ans[a,b] = \frac

ans[a,

b]=d

p[a−

1]dp

[b]​

然後要注意到取模,所以需要乘法逆元。用擴歐或者費馬小定理都可以求。

#include

using namespace std;

const

int n =

1e5+

10, mod =

9973

;char s[n]

;int dp[n]

, n, a, b;

intinv

(int x,

int y)

intmain()

for(

int i =

0; i < n;

++i)

}return0;

}

HDU5976 貪心 逆元 字首和

大連區域賽的銅牌題,雖然只是銅牌題我也想了好一會,感覺這場區域賽挺不好打呀。貪心策略我是這樣想出來的,先令n 25把,寫成34567乘積最大,假如n被迫變小呢?34567 24567 23567 23467 23456,這樣最划算對吧,那麼接下來?23456 3457,因為長度被迫 1了,and t...

HDU 5976 逆元,字首和,數論

一些總結 1 乙個數字若是分成任意數字求乘積和最大,則盡量全部分成3 2 分成兩個則是n 2 3 拆成n個,拆成這個數 n 4 不能重複,則優先拆為2,3,4 剩餘 x從後往前平分。逆元應用 求逆元 inv 1 1 1的逆元顯然是1 for i 2 i include define max 1000...

hdu5976 Detachment 逆元 優化

傳送門 題意 給定乙個數x,我們可以把這個數分解成乙個乙個的小的數字a1,a2,a3 定義s a1 a2 a3 問如何分解x使得s最大,並且不能有重複的數字 思路 分解成數量多的小的數字,比分解成數量少的大的數字的乘積更大,這一點我不知道怎麼證明 並且由基本不等式我們可以知道,相等和的兩個數,越接近...