洛谷P6685 可持久化動態仙人掌的直徑問題

2021-10-08 12:51:52 字數 1644 閱讀 5200

看標題逼格這麼高結果只是虛晃一槍

題目描述:

給定 n,m

n,mn,

m,求有多少個正整數 x

xx,使得 xm≤

nx^m\le n

xm≤n

。tips

乍一眼看二分,但容易爆,因為 n,m

≤109

n, m \le 10 ^9

n,m≤10

9 , 列舉太大會超 long long。

第二眼看就是乙個簡單的數學柿子 −

−>

-->

−−>

由 xm≤n

x ^ m \le n

xm≤n

,得 −

−>

-->

−−>

l og

xn≤m

log_ \le m

logx​n

≤m,左邊可由那啥換底**變形得到 −

−>

-->

−−>

l og

enlo

gex≤

m\frac }} \le m

loge​x

loge

​n​≤

m,移項得到 −

−>

-->

−−>

l og

ex≥l

ogen

mlog_ \ge \frac}

loge​x

≥mlo

ge​n

​ ,即 −

−>

-->

−−>

x ≤e

loge

nm

x \le e^}}

x≤emlo

ge​n

​,用自帶函式 exp

()

exp()

exp(

) 就可以直接計算以自然對數 e

ee 為底的冪, 而自帶函式 log

()

log()

log(

) 也是計算以 e

ee 為底的對數。複雜度僅為計算乙個 log

loglo

g ,乙個 exp

expex

p 和一次除法的大小。

可能是精度問題,如果不特判 m=1

m = 1

m=1 の 情況會 wa #1,這裡需要注意一下。

t im

etime

time

f or

forforco

de

code

code

−>

-->

−−>

#include #include #include #define ll long long

#define inf 0x3f3f3f3f

using namespace std;

inline int read()

int n, m, ans;

int main()

else

return 0;

}

完結撒花 ✿✿ヽ(°▽°)ノ✿

洛谷P3919 可持久化陣列

題目大意 需要維護乙個長度為 n 的陣列,支援在歷史版本上單點修改和單點查詢。題解 顯然,如果直接暴力維護的話會 mle。因此,採用線段樹進行維護,使得空間複雜度由 o mn 降至 o mlogn 不過相應的時間複雜度由 o 1 上公升至 o logn 如下 include using namesp...

洛谷P3919可持久化線段樹

有了可持久化陣列,便可以實現很多衍生的可持久化功能 例如 可持久化並查集 如題,你需要維護這樣的乙個長度為 n 的陣列,支援如下幾種操作 在某個歷史版本上修改某乙個位置上的值 訪問某個歷史版本上的某一位置的值 此外,每進行一次操作 對於操作2,即為生成乙個完全一樣的版本,不作任何改動 就會生成乙個新...

洛谷P3919 模板 可持久化陣列

題目大意 有兩個操作,1 在第x次操作後的版本上修改乙個值,2 查詢在第x次操作後的版本上的乙個節點的值 即 你需要維護這樣的乙個長度為n的陣列,支援如下幾種操作 1.在某個歷史版本上修改某乙個位置上的值 2.訪問某個歷史版本上的某一位置的值 此外,每進行一次操作 對於操作2,即為生成乙個完全一樣的...