原创 POJ 3468 A Simple Problem with Integers(線段樹或樹狀數組)

題目鏈接:http://poj.org/problem?id=3468 題目思路:區間修改,區間查詢,線段樹模板題 代碼: #include<cstdio> #include<cmath> #include<cstring> #incl

原创 STL容器長度複雜度

總結: list的size()接口:O(N) vector的size()接口:O(1) 其餘STL容器可按下面方法自測。   求時間複雜度方法: #include<iostream> #include<list> #include<ct

原创 牛客網 Wannafly挑戰賽14 E.無效位置 (並查集+線性基)

鏈接:https://www.nowcoder.com/acm/contest/81/E 來源:牛客網   題目描述 給一個1-base數組{a},有N次操作,每次操作會使一個位置無效。一個區間的權值定義爲這個區間裏選出一些數的異或和的最

原创 斯特林數

第一類斯特林數 定理: 第一類斯特林數S1(p,k)計數的是把p個對象排成k個非空循環排列的方法數。 證明:把上述定理敘述中的循環排列叫做圓圈 遞推公式: S1(p,p)=1(p>=0),有p個人和P個圓圈,每個圓圈就只有一個人 S1

原创 2017 ICPC 西安站現場賽 A.XOR (線段樹+線性基)(UVALive - 8512)

 XOR Consider an array A with n elements. Each of its element is A[i] (1 ≤ i ≤ n). Then gives two integers Q, K, and Q

原创 洛谷OJ P3368 【模板】樹狀數組 2

題目鏈接:https://www.luogu.org/problemnew/show/P3368 題目思路:區間更新,單點查詢模板題,樹狀數組做法 AC代碼: #include<cstdio> #include<cmath> #incl

原创 洛谷OJ P3803 【模板】多項式乘法(FFT)

題目鏈接:https://www.luogu.org/problemnew/show/P3803 題目思路:FFT模板題 AC代碼: // luogu-judger-enable-o2 #include <stdio.h> #inclu

原创 開根號

1.牛頓迭代法 double sqrt(double x) { if (x == 0) return 0; double last = 0.0; double res = 1.0; while (res

原创 POJ 2155 Matrix

題目鏈接:http://poj.org/problem?id=2155 題目大意: 給定n*n的矩陣,q次操作,C操作取反(x1,y1),(x2,y2)爲左上角右下角的子矩陣,Q操作查詢(x,y)單點的值 題目思路: 二維樹狀數組區間修改

原创 二維樹狀數組幾種模板

1.單點更新,區間查詢 int tree[N][N]; //行列分開看,每一行每一列都是一個一維樹狀數組 int n,m; //n行m列 int lowbit(int x){return x&(-x);} //單點更

原创 C++的STL模板類 nth_element

在c++的stl庫中,提供了nth_element這樣一個函數,頭文件algorithm 它的用法是nth_element(a+l,a+k,a+r) 這樣它會使a這個數組中區間(l,r)內的第k大的元素處在第k個位置上(相對位置) 將第k

原创 快速排序

算法思想:快速排序時間複雜度O(NlogN),每次先選擇一個關鍵字key,一般是選擇序列的第一個元素或者序列的最後一個元素,將比key值小的元素全部放在左邊,將比key值大的放在key值的右邊,,然後一層層的遞歸下去,直至區間中只有一個元

原创 O(N)線性求中位數,線性求第k大

求中位數容易想到的方法就是排序,直接去n/2大,但這樣排序時間就需要O(nlogn),總體時間也就是O(nlogn)。 有時候並不能滿足我們需要隨機存取第k大元素要求。 所以就有了線性求中位數的方法。   第一種方法:nth_elemen

原创 HDU 3949 XOR(求異或值第k小)

題目鏈接:http://hdu.hustoj.com/showproblem.php?pid=3949 題意:給定n個數,q次查詢,詢問第k小的異或值。 題目思路:線性基模板題,注意0是否可取,如果cnt==n,說明每個數對線性基都有貢獻

原创 線性基

線性基: 定義: 設數集TT的值域範圍爲[1,2^n−1][1,2^n−1]。  TT的線性基是TT的一個子集A={a1,a2,a3,...,an}。 A中元素互相xor所形成的異或集合,等價於原數集TT的元素互相xor形成的異或集合。