本週總結(7 6 7 12)(基礎演算法)

2021-10-23 08:28:58 字數 3838 閱讀 4821

高精度其它總結

本週訓練拓展題

本週複習的知識點有:排序、二分、高精度、字首和與差分、雙指標演算法、位運算、離散化、區間合併。

void

qsort

(int a,

int l,

int r)

a[i]

= x;

qsort

(a, l, i -1)

;qsort

(a, i +

1, r)

;}

時間複雜度:o(nlogn)

void

msort

(int a,

int l,

int r)

while

(i <= mid) b[k ++

]= a[i ++];

while

(j <= r) b[k ++

]= a[j ++];

k =0;

for(

int i = l; i <= r; i ++

) a[i]

= b[k ++];

}

時間複雜度:o(nlogn)

求數n的二進位制第k位數字:n >> (k – 1) & 1

返回數n的最後一位1:lowbit(n) = n & -n

for

(int i =

0, j =

0; i < n; i ++

)

時間複雜度:o(n)

int

bsearch1

(int l,

int r)

return l;

}

int

bsearch2

(int l,

int r)

return l;

}

時間複雜度:o(logn) * check的時間複雜度

string add

(string a, string b)

if(t) c +

='0'

+ t %10;

reverse

(c.begin()

, c.

end())

;return c;

}

bool

check

(string a, string b)

//判斷大小

string sub

(string a, string b)

reverse

(a.begin()

, a.

end())

;reverse

(b.begin()

, b.

end())

;

string c;

int t =0;

//退位

for(

int i =

0; i < a.

size()

; i ++

)else

}reverse

(c.begin()

, c.

end())

;int i =0;

while

(c[i]

=='0'

&& i +

1< c.

size()

) i ++

;//去除前導零

c = c.

substr

(i, c.

size()

- i);if

(c.size()

==0) c =

'0';

if(f) c =

'-'+ c;

return c;

}

大數 × int型

string mul

(string a,

int b)

while

(t)reverse

(c.begin()

, c.

end())

;int i =0;

while

(c[i]

=='0'

&& i +

1< c.

size()

) i ++

; c = c.

substr

(i, c.

size()

- i)

;return c;

}

大數 ÷ int型

string div

(string a,

int b,

int&d)

//d為餘數

int i =0;

while

(i +

1< c.

size()

&& c[i]

=='0'

) i ++

; c = c.

substr

(i, c.

size()

- i)

;return c;

}

大數 ÷ 大數 可以用高精度減法實現,每次減去除數即可

sscanf、sprintf函式可用於字串和數字間的互換

sscanf用法

int

sscanf

(const

char

*buffer,

const

char

*format,..

.);

返回值為成功賦值的個數,其它用法和scanf相同,string型別需要用c_str()轉換

sprintf用法

int

sprintf

(char

*string,

char

*format [

,argument,..

.]);

long long格式化輸出時,linux環境下為"lld"windows環境下為"l64d"

1 << k表示2的k次方

二維vector> a行數:a.size()列數:a[0].size()

int_max是int型的最大值,判斷是a * 10是否超限,用a > int_max / 10int_max=2^31-1

int型負數轉換為unsigned int時,相當於第32數字變為1

位運算是補碼進行運算

二分查詢函式(基於已排序的序列)

lower_bound (beg,end,val)

返回乙個迭代器,指向非遞減序列[first, last)中的第乙個大於等於(>=)val的位置

upper_bound (beg,end,val)

返回乙個迭代器,指向非遞減序列[first, last)中的第乙個大於 (>) val的位置

具有二分性不一定是對排序的序列,也可能是滿足某條件

本週總結(09 11 13)

計畫總是趕不上變化的,本來還想著能夠在中旬之前結束寫文件,但是現在看看還得再用一段時間。前幾天不經意之間想了一下,把自己嚇了一跳。這個學期馬上就要結束了!時間要轉進吶,質量也不能放下,畢竟也算是第一次正兒八經的做工程 以前的那個算是玩耍吧 這週也沒白過,腦袋始終是出於迴圈狀態。不斷的思考著這個系統中...

本週複習總結

1.軟體 是為完成某些特定功能而編制的乙個到多個程式檔案的集合 2.程式語言的發展 機器語言 組合語言 高階語言 3.編碼實現 源 編譯源 鏈結注意 1 在編譯源 的過程中,翻譯 解釋 程式比編譯程式的執行速度要慢 4.乙個簡單的程式設計一般包含分析問題,設計演算法,編制程式,除錯程式 5.任何解決...

本週技術總結

總結問題有 1.頁面有只顯示一半。原因是js 中有些資料計算有問題,計算量過大,導致頁面顯示超時,只顯示一半。解決方法,去掉 優化js中的資料計算與載入。2.當有兩個或兩個以上的地方要對某一相同的物件進行增刪改時,會造成資料的相互覆蓋,有可能出現空值,使得客戶登入報空值。修改方案,只對所操作的資料物...