原创 STL 二分法 upper_bound()與lower_bound()使用方法
lower_bound( first, last,val)算法返回一個非遞減序列[first, last)中的第一個大於等於值val的位置 的迭代器 。 upper_bound(first, last,
原创 STL 棧stack的使用
1.Stack是一種關聯容器,是通過簡單地修飾線性類deque的接口而獲得的另一種“容器類”,往往被歸結爲配接器(adapter)而不是容器(Container)。 注意:stack不能遍歷,所以沒
原创 hash_map,unordered_map的使用
C++ STL中的set,multiset,map和multimap實現基於紅黑樹,插入和查找的複雜度均爲logn hash_map 和map不同的是hash_map是基於哈希表實現的,查找複雜度位o(1),插入略慢,還沒有測試,插入後不
原创 經典二分算法詳解
二分算法是一種查找算法,是最基礎的,最簡單易學且高效實用的算法之一。 適用條件:序列有序,答案可以在一定範圍內判斷 時間複雜度O(logn) 例題:S(n)=1+2+...+n;給定s,按照要求求出n; 1.求出第一個大於等於給定數字的n
原创 fmod() 浮點數取模
學習了一個浮點數取模函數 頭文件:#include <cmath> fmod() 用來對浮點數進行取模(求餘),其原型爲: double fmod (double x,double y); 注意:y不能爲0; 例如:4.2對2取模位0
原创 STL pair的用法
pair的本質就是結構體 pair包含兩個元素first,second,和結構體一樣用“.”來訪問和修改,只是使用起來比結構體方便而已,兩個元素可以自定義類型,可以爲數組或者結構體。 重載了<、>、<=、>=、==、!=六個運算符 其規則
原创 解決cin,cout速度過慢問題
使用ios::sync_with_stdio(false);語句 cin,cout之所以效率低,是因爲先把要輸出的東西存入緩衝區,再輸出,導致效率降低,而這段語句可以來打消iostream的輸入輸出緩存,可以節省許多時間,使效率與scan
原创 球盒問題
球盒問題 一、球相同,盒子相同,且盒子不能空 例1.8個相同的球放入3個相同的盒子中,每個盒子中至少有一個. 問有多少種不同的放法? 解析 球入盒問題,可以看成分兩步完成,首先是將8個球分成三堆,每堆至少一個. 由於這裏球和盒子
原创 解決codeforces訪問慢的問題
1.右鍵單擊開始按鈕,打開資源管理器,在資源管理器的地址欄中填寫“%SystemRoot%\System32\drivers\etc”並進入。 2.右鍵單擊“HOSTS”文件,選擇“屬性”去掉只讀選項,確保“HOSTS”文件能被修改。
原创 求素數,判斷素數,篩法
1.判斷素數 時間複雜度 O(sqrt(n)) 空間複雜度 O(1) #include<iostream> #include<cmath> //sqrt函數頭文件 using namespace std; bool prime(i
原创 STL 隊列queue的使用
queue爲單向隊列與棧有點類似,一個是在同一端存取數據,另一個是在一端存入數據,另一端取出數據。單向隊列中的數據是先進先出(First In First Out,FIFO)。在STL中,單向隊列也是以別的容器作爲底部結構,再將接口改變
原创 使用庫函數,進制輸入輸出技巧
#include<iostream> #include<cstdio> using namespace std; int main() { int n; while(cin>>n) { cout<<
原创 閏年的判斷
閏年的判斷方法 ①、非整百年能被4整除的爲閏年。(如2004年就是閏年,2100年不是閏年) ②、能被400整除的是閏年。(如2000年是閏年,1900年不是閏年) #include<iostream> using namespace s
原创 最大公約數算法GCD
歐幾里德定理若 a=b×r+q 則gcd(a, b) = gcd(b, q). GCD的兩種實現方法,效率相近,但數據太大遞歸實現會出現崩潰。 時間
原创 十進制轉換爲任何進制
剛剛開始學習編程,常遇到進制轉換類的題目,在這裏做一下總結 直接貼代碼 #include<iostream> #include<cstdio> #include<cstring> using namespace std; char va