原创 洛谷題集——單源最短路徑(弱化版、spfa+鄰接表)

題目 給出一個有向圖,請輸出從某一點出發到所有點的最短路徑長度。 輸入格式 第一行包含三個整數 n , m , s 分別表示點的個數、有向邊的個數、出發點的編號。 接下來 m 行每行包含三個整數 u , v , w 表示一條u→v

原创 洛谷題集——最大食物鏈計數(動態規劃、圖的基本應用、BFS)

題目 給你一個食物網,你要求出這個食物網中最大食物鏈的數量。 (這裏的“最大食物鏈”,指的是生物學意義上的食物鏈,即最左端是不會捕食其他生物的生產者,最右端是不會被其他生物捕食的消費者。) 由於這個結果可能過大,你只需要輸出總數模

原创 基礎算法題——奇怪的分式(避免小數運算)

奇怪的分式 上小學的時候,小明經常自己發明新算法。一次,老師出的題目是: 1/4 乘以 8/5 小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (參見圖1.png) 老師剛想批評他,轉念一想,這個答案湊巧也對啊,真是

原创 藍橋杯15屆第十題——生命之樹(dfs, vector)

前言:題目看似簡單,但是對於第一次接觸這類題型的同學還是會存在着一定的困難。 這類題型是典型的樹型遍歷問題。若我們能夠將樹都按照路徑遍歷一遍,然後一直維護一個權值最大的子集即可。 生命之樹題目 在X森林裏,上帝創建了生命之樹。 他

原创 0/1揹包例題及解析(裝箱問題、kkksc03考前臨時抱佛腳)

前言:這道題可以說是最經典的0/1揹包問題。 最近算是第一次正式遇到0/1揹包問題(以前都是暴力求解),這篇文章主要將這種類型的題目講細、講清楚。 0/1揹包 個人認爲:0/1揹包思路一想通了,就會容易理解,然後多練習類似的題型鞏

原创 如何運用C++ set 附例題(set中erase函數、iterator迭代器)

set的頭文件爲< set >,提供瞭如下操作: (1)s.begin() 返回指向第一個元素的迭代器。 (2)s.clear() 清除所有元素。 (3)s.count() 返回某個值元素的個數。 (4)s.empty() 如果

原创 加速讀取——三式(getchar,std::ios::sync_with_stdio(false)、cin.tie(0))

在一些題目中會出現數據輸入很大的情況,如果我們運用不好讀取數據工具的話,那麼很可能會在讀取數據上花費較多的時間,甚至還沒讀完就超時了。 讀取速度 cin << scanf ≈ cin(關閉流同步) << getchar() ci

原创 基礎算法題——地宮取寶(深搜、剪枝)

地宮取寶 問題描述   X 國王有一個地宮寶庫。是 n x m 個格子的矩陣。每個格子放一件寶貝。每個寶貝貼着價值標籤。   地宮的入口在左上角,出口在右下角。   小明被帶到地宮的入口,國王要求他只能向右或向下行走。   走過某

原创 拓撲排序(最大食物鏈計數)

拓撲排序 拓撲排序(topological-sort)是指由某個集合上的一個偏序得到該集合上的一個全序的操作。拓撲排序常用來確定一個依賴關係集中,事物發生的順序。 拓撲排序是對有向無環圖的頂點的一種排序,它使得如果存在一條從頂點A

原创 基礎算法題——小朋友排隊(樹狀數組)

小朋友排隊 問題描述   n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。 每個小朋友都有一個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。 如果某個小朋友第一次被要求交

原创 基礎算法題——牌面種類(DFS回溯、思維)

牌面種類 小明被劫持到X賭城,被迫與其他3人玩牌。 一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。 這時,小明腦子裏突然冒出一個問題: 如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裏能拿

原创 基礎算法題——帶分數(全排列,工具庫)

前言 這道題理解起來不難,但是要找到一個合適的方法對題目進行優化,就會相對麻煩些。 藍橋杯的題,真的到處都是坑的感覺。。。 帶分數題目 資源限制 時間限制:1.0s 內存限制:256.0MB 問題描述 100 可以表示爲帶分數

原创 樹的遍歷(概念與習題)

樹的遍歷概念 首先我們觀察三種遍歷方式對根、左、右結點的遍歷順序 先序的遍歷順序:根 – 左 – 右 中序的遍歷順序:左 – 根 – 右 後序的遍歷順序:左 – 右 – 根 遍歷順序可以理解爲 優先級 先序遍歷舉例: 若一個節點有

原创 牛客網題集——Min Value(邏輯)

Min Value 牛客網測試平臺 題意:一個由 N 個數組成的序列 a1,a2,a3,······,an-1,an,從中任選兩個數 ai 和 aj,使得 ai + aj 的絕對值最小,並且計算出 i + j 的值,其中 i ≠

原创 C++STL庫神器:nth_element() 詳解

nth_element() nth_element() 函數頭文件:algorithm.h 功能介紹 arr[n]; //默認求第m大的元素 std::nth_element(arr, arr+m, arr+n); //定義cm