各种有用的东西、黑科技、技巧
轉(zhuǎn)自WerKeyTom_FTD的blog
1、整體二分及cdq分治實現(xiàn)時,每個區(qū)間不需要單獨開隊列。可以把操作弄到一個數(shù)組了,然后多兩個參u、v表示這個區(qū)間的操作在u~v,做完后對每個操作打標(biāo)記表示是否往右區(qū)間傳即可。
2、兩個long long相乘取模怎么辦?
第一種是快速乘,類似快速冪,復(fù)雜度多了個log
第二種是找一個比較小的數(shù),然后搞一波,詳見代碼
第三種來自Yves___的博客long long相乘取模黑科技
LL mult( LL A, LL B, LL Mo ) {LL temp = ( ( LL ) ( ( db ) A*B/Mo+1e-6 ) * Mo );return A*B - temp; }大概意思就是強制轉(zhuǎn)double然后搞一波再轉(zhuǎn)回來。
3、unique()可以刪除重復(fù)元素,然后返回刪除重復(fù)元素后的末端地址。
下面這段代碼即可實現(xiàn)離散化。
4、可以用調(diào)用ctime,運用clock()獲取程序運行至該語句時的時間(默認(rèn)ms)
#include<iostream> #include<ctime> using namespace std; int main() {int n=0;//start=clock();while(n<100000000)n++;cout<<(double)clock()<<endl;return 0; }5、調(diào)用頭文件bits/stdc++.h就相當(dāng)于包括了好多庫……
6、如何打偽隨機數(shù)?
7、對拍(從前一直用c++對拍的蒟蒻就是他(還有我本人))
在程序的目錄下建立.txt文件,輸入:
把文件擴展名名改成.bat
8、關(guān)于可持久化,記住以下幾點:
1:一個點的信息要被修改時需要對其新建。
為了節(jié)省空間,一個點的信息不被修改時就沒必要新建了。
例如合并一個結(jié)點與空節(jié)點,此時不需要新建。
2:為了節(jié)省空間,如果對空節(jié)點進行newnode我們直接返回空節(jié)點。
3:打標(biāo)記也涉及修改信息,不要忘記newnode。而down的時候其實并不用,因為修改的是兒子的信息。
9、從OJ上看來一句話,不知道來源。
OI比賽的題目無非三種,從暴力到優(yōu)化,從一般到特殊,重新定義題目。
10、O(n)求出1~n對于質(zhì)數(shù)MOD的逆元。
來自鏈接
inv[i] = ( MOD - MOD / i ) * inv[MOD%i] % MOD
證明:
設(shè)t = MOD / i , k = MOD % i
則有 t * i + k == 0 % MOD
有 -t * i == k % MOD
兩邊同時除以ik得到
-t * inv[k] == inv[i] % MOD
即
inv[i] == -MOD / i * inv[MOD%i]
即
inv[i] == ( MOD - MOD / i) * inv[MOD%i]
證畢
總結(jié)
以上是生活随笔為你收集整理的各种有用的东西、黑科技、技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android pay 机型,苹果有Ap
- 下一篇: 软件开发中产品与项目区别