To Heart 總結 所學知識總結

2021-10-19 12:06:56 字數 2010 閱讀 5290

為了完成自己立下的flag,筆者決定開一篇部落格,將自己所學過的所有板塊進行梳理,也許工程量有些浩大,但筆者相信,自己一定可以成功。

通過區域性最優解構成全域性最優解

均分紙牌 題解

紙牌總數是一定的,把牌堆看成乙個序列,每個堆最後的紙牌數都應該是這個序列的平均數。所以就統計那些牌堆不為平均數即可。

#include

using

namespace std;

int a[

105]

,sum;

intmain()

sum/

=n;for

(int i=

1;i<=n;i++

) sum=0;

for(

int i=

1;i<=n;i++

) cout

}

首先,放句名言

90%的程式設計師無法正確實現二分查詢演算法

二分主要利用了序列的單調性。假設乙個單調遞增的序列,那麼其中的任何乙個元素都比前面的所有元素大,都比往後的所有元素小。所以我們可以折半查詢某一元素

二分可以在o(logn)的複雜度中查詢序列的某一元素。

int l=

0,r=n+

1,ans=0;

while

(l<=r)

不會吧,不會吧,不會真的有人連搜尋都打不來吧

不會吧,不會吧,不會真的有人連dp都會打吧

因為搜尋和dp的知識太多了,所以筆者就單獨把它們列出來。

字首和可以用o(n)的時間複雜度對陣列進行預處理,然後再o(1)的時間之類求出任意兩個元素之間的元素和。

我們可以用乙個陣列sum來計算字首和,其中sum

isum_i

sumi

​表示前i項的元素和。

所以很容易可以得到:sum

i=su

mi−1

+a

isum_i=sum_+a_i

sumi​=

sumi

−1​+

ai​ ,其中a

ia_i

ai​表示當前元素的值。

如果我們要查詢第i項到第j項的字首和,就可以看成求1∼j

1 \sim j

1∼j項的字首和再減去1∼i

−1

1 \sim i-1

1∼i−

1項的字首和,所以就可以表示成sum

i−su

mj−1

sum_i-sum_

sumi​−

sumj

−1​。

可以在log的時間複雜度中判斷出兩個元素是否在乙個集合。

具體實現可以參考這篇部落格

當然,我還是要提一提

現在假設有一堆不同的元素,每幾個元素就組成乙個集合。

我們在每乙個集合當中選出乙個元素作為代表,那麼只要兩個元素所在集合的代表相同,它們就在同乙個集合裡面。

那如果我們想把兩個不同的集合合成乙個集合怎麼辦呢?

很簡單,只要將其中乙個集合的代表放在另乙個集合之中就可以了

模板如下

首先是初始化

void

make_set

(int n)

}

然後是查集

int

find

(int x)

最後是並集

void

join

(int x,

int y)

線段樹和下文將提到的樹狀陣列一樣,是解決區間問題的資料結構,但線段樹可以實現的功能比樹狀陣列多。

因為牽扯的東西有點多,所以就又開了一篇部落格,這裡就不展示了。

吖,這個東西不好講

那我們又開一篇部落格吧!!!

絕對不是因為我想水部落格

後面的有時間再寫吧。。。

7 7PHP所學知識總結

標籤中的屬性名分為 系統屬性和自定義屬性 系統屬性名 能查到的都為系統屬性 自定義屬性名 自定義的屬性,自己寫的,本地路徑 2.定位 點選的時候到指定的位置 1.設定錨點,給附近的標籤加id屬性 2.a標籤路徑指定到id屬性值 代表本頁 例如 a href bt8 跳轉標題八 乙個標題裡面只能有乙個...

7 9PHP所學知識總結

am 複習昨天所學 的應用 width 寬度 border 邊界 cellpadding 單元格內文字與邊框距離 cellspacing 邊距 pm 表單的學習 表單 收集使用者的輸入傳送到後台 提交方式 get 預設 form.html?zhanghao 123 mima qwe post在請求裡...

7 6PHP所學知識總結

h1 為標題 h1 h6 標題會逐漸變小 需更換標籤裡面的數字 如 標題 標題 標題 段落 常用!p 自動預設一行 基本常用 都為加粗文體 都為傾斜 下劃線這是重新整理格式 上標標籤 下標標籤 刪除線標籤 大字型大小標籤 小字號標籤 特殊符號 空格的意思 水平線標籤 br 換行 如果需要多重換行,則...