社會實踐調查報告
題目:關於暑假acm訓練的實踐與總結
專業班級:
數學與應用數學專業1班
姓名:李雙智
學號:20164249
2023年8
月25日
【摘要】
31.樹狀陣列和圖論
42.二分三分以及單調佇列
53.樹狀陣列與單調佇列
54.總結6
【摘要】
:
本文主要總結了這個暑假acm實踐的主要內容,以及綜述了一些小的經驗教訓等等。
這個假期的訓練從7月31號開始到今天算是接近尾聲了。回想起來每天都很充實,從日常的訓練,到周二,周四打比賽,從一開始的活力滿滿,到現在甚至感覺有些疲憊,但是還是快樂的,因為大家在一起努力,這個假期也算是沒有浪費。
這次訓練的一開始複習了搜尋和圖論的相關的內容,我們大致熟悉了一下很長時間沒有摸的**。對於搜尋這方面,大致分為兩塊的內容,第一方面是dfs,第二方面是bfs,dfs就是深度優先搜尋,顧名思義就是一搜到底,一般這種搜尋的目的是搜最終的結果,dfs裡面大部分題目有固定的搜尋次數,而搜尋的次數就是遞迴的過程,也就是常見的dfs(int t)這種型別,當t達到某個值的時候判斷這個結果是否有效(也就是符合最終的結果,比如到達某個點,或者是找到的是否符合條件),然後回溯回到上乙個狀態(回溯的過程需要恢復到搜尋前的狀態,若不恢復,就會造成混亂),在進行下乙個狀態的搜尋。而bfs則是廣度優先搜尋,顧名思義就是狀態平等,層層下搜,用佇列儲存狀態,並依次出隊,而後搜尋下乙個狀態,若滿足,就進隊,進行下一輪的搜尋。這種搜尋一般是處理路徑查詢問題或者最短路徑的問題,基本模板就是queue<>qq;while(!qq.empty());諸如此類。也就是乙個佇列,當佇列不空開始出隊和入隊的判斷,如果最短路徑,搜到結果直接終止。
區間移動,求區間最值。(這種題目的解決方案就是模板加head處理,如果head的值小於區間的左端點,那麼head++,一直到head的值屬於這個區間,那麼這個head下存的東西就是這個區間內的最大(最小)的值)
求某個數兩邊有多少個比他大的(小的)。(這種題目就從兩個方向建立單調佇列,利用的是單調佇列的乙個性質,就是儲存的是上乙個比他大的(小的)值的值或者位置)
也就是第二個的變式,主要利用的就是單調佇列裡所存元素的含義。
3.樹狀陣列與單調佇列
對於樹狀陣列而言,它的核心就是lowbit(int x)函式建樹,樹狀陣列的元素之間的聯絡都是建立在這乙個簡單的位運算上,也就是return x&(-x),然後用add函式和sum函式完成更新和查詢的操作,樹狀陣列可以用來處理以下四類問題(目前我見過的比較典型的四類問題)。第一類問題,也就是樹狀陣列的使用的初衷,點的更新,區間求和,這類問題就是一種最簡單的模板題,用上述三種函式就可以完成,這類問題最典型的就是敵兵布陣。第二類問題就是用樹狀陣列求逆序數,這種問題一般比較難想到,但一旦想到,處理起來也是一類模板的簡單的問題。如果資料範圍較大(比如資料大小達到了十億),需要對資料進行離散化處理(結構體存邊的權值以及他的位置,按權值排序,再按位置存到乙個新的陣列裡面,然後用模板即可)。第三類問題就是區間染色問題,這類問題也算是一種模板,可以擴充套件到多維,是樹狀陣列的腦洞更新應用型別,這種題的思路就是直接用sum存點被塗色的次數。第四類問題就是dp的優化問題,這種問題千變萬化,但是大都於區間難脫干係。
而對於線段樹,它也是一種區間工具,可以處理比樹狀陣列更為廣泛的區間問題,但是相對的,付出的空間的代價更大,線段樹大致可以處理以下幾種典型問題:
單點更新,區間和查詢。這類問題是線段樹的模板問題,主要用來強化建樹的方法等等。
單點更新,區間最大值查詢。這類問題也是線段樹的模板問題,更改樹存的內容就可以了。
區間更新,單點查詢(lazy標記**,思路就是查詢到正好的左端點和右端點,就return,不進行下一步的更新,將要更新的內容存下來,等到下一次用到的時候在進行更新)。這類問題也是一種模板問題。
dp的優化,和樹狀陣列基本類似。
4.總結
總的而言,我們對知識點的學習較快,做題較少,更需要對知識點的理解。以上我對知識點的理解之中,明顯感覺到我的自學部分做的並不太好,顯得有許多疏漏,有很多東西都沒有做到,知識點的遍及面也欠缺了很多。但這次的訓練是我第一次花了乙個暑假的時間自己學習知識點的一次經歷,覺得自己有了很大的進步,做了一件更像乙個大學生應該做的事情,步入大學,就應該學會如何自學,而不是等待老師的總結。而這一缺陷更需要我在日後的訓練中加以彌補,楊恆賽後補題,查缺補漏的習慣,學會通過比賽的正規題目查詢到自己學習的知識點還欠缺哪些,還有哪些應該會的用法我依然不會。而後,我認為學習比較重要的是知識點的反覆,反覆是乙個十分重要的過程,尤其在程式設計這種細節極多的專案中。最近幾次的比賽反映出來的,就是模板大致記住,細節處理欠妥,但這是十分致命的,出不了題目是次要的,這種似懂非懂,反而會影響自己的心態,導致往後的比賽無法正常的進行。因此更需要反覆,記住其中的細節所在,也就是細節決定成敗這句話的含義。
而對於中間我和隊友打的幾場比賽,我認為前幾場的效果相對較差,但是後面幾場還是有些配合的,所以做起題來順利了好多。比賽是一種團隊活動,需要的是對隊友的一種信任,支援,理解,這是第一位的,而後就是沉著處事,冷靜應對,不能因為幾發wr就自亂陣腳,更不能一言不合就吵架,這都是不好的。一開始的幾場比賽我認為差勁就在隊友之間的不和諧,合作失調,但最後調整之下還是好了很多。
假期雖然過去了,但acm之路遠遠沒有結束,希望明年的今天,我能更加自信的面對自己,面對acm的比賽。
暑假訓練總結 SSL暑假訓練總結
第一周過的還算好吧,覺得飯堂伙食也挺好的,同學也挺好。學習的東西感覺比小學難好多,有種覺得以前學的東西太簡單了的感覺,但多虧了小學的時候基礎打得還算紮實,學得還行,但總是感覺自己就是個菜雞,就是乙個蒟蒻,哎,室友真的太強了。第一周總結 第二週自我感覺挺不錯的,總算追上了部分室友,成績也開始 這一切都...
暑假訓練總結
這一暑假的訓練結束了,感覺自己仍然是一條鹹魚.一暑假的訓練不僅回顧了之前的知識,還學習了新的知識。首先是複習了搜尋的知識,個人感覺搜尋的題目一般 都比較長 也許是自己寫的太囉嗦,廢 太多.而有時候往往在一些不經意的地方而出錯,所以搜尋的題目一般要仔細的把握,不能在一些地方潦草而過,往往會在下面就卡住...
暑假訓練總結
題目 暑假acm訓練的實踐與總結 專業班級 資訊與計算科學2班 姓名 李 雨潔 學號 20164395 2017 年 8 月 25 日 摘要 3 1.搜尋 和圖論 4 2.二分查詢和 單調佇列 5 3.樹狀陣列 5 4.總結 6 這個假期的訓練從7月31號開始到今天算是接近尾聲了。這次訓練 首先是部...