看標題逼格這麼高結果只是虛晃一槍
題目描述:
給定 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
logxn
≤m,左邊可由那啥換底**變形得到 −
−>
-->
−−>
l og
enlo
gex≤
m\frac }} \le m
logex
loge
n≤
m,移項得到 −
−>
-->
−−>
l og
ex≥l
ogen
mlog_ \ge \frac}
logex
≥mlo
gen
,即 −
−>
-->
−−>
x ≤e
loge
nm
x \le e^}}
x≤emlo
gen
,用自帶函式 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,即為生成乙個完全一樣的...