原创 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