CodeChef Jewels and Stones:哈希集合快速統計字符包含關係
問題描述 給定珠寶字符串J和石頭字符串S。統計S中有多少字符在J中出現。T≤100,|J|,|S|≤100。 解法:布爾數組/哈希集合 字符集為ASCII(2
HDU 3038:帶權並查集維護區間和一致性
問題描述 m個查詢,每個查詢給出區間[l,r]的和為s。判斷有多少查詢與之前**矛盾**。 並查集擴展:維護到根的距離/和 將前綴和視為節點:`S[i] =
FZOJ 1036 四塔問題:尋找遞推規律O(1)求解
問題描述 四塔漢諾塔:n個盤從塔1移到塔4,求最少步數。n≤50,000,結果模10000。 規律發現 四塔最優策略(Frame-Stewart算法): `d
LeetCode Word Ladder:BFS單詞轉換最短路徑
問題描述 給定起始詞 `beginWord`、目標詞 `endWord`、字典 `wordList`。每步僅能改變**一個字母**,且新詞必須在字典中。求最短轉
POJ 1042 Gone Fishing:貪心法求最佳釣魚時間分配
問題描述 n個湖(≤25),單向路連接。從湖1出發,總時間h小時(換算為5分鐘間隔數H=12h)。 湖i:初始5分鐘魚獲f_i,每5分鐘遞減d_i(≤0則無魚)
ZOJ 3784 String of Infinity:AC自動機與構造性思維解析
在解決 ZOJ 3784 String of Infinity 這道題時,我們採用了一種非同尋常的 AC 自動機構造方法,甚至一度佔據 ZOJ 排行榜首位。從運
POJ 1474 多邊形的核:半平面交判斷可見區域
問題描述 給定矩形多邊形(邊平行坐標軸,頂點按順時針給出),判斷是否存在一點能看見整個多邊形內部(即多邊形的**核**非空)。 幾何轉化:半平面交 多邊形每條
ZOJ 3780 Paint the Grid Again:拓撲排序求字典序最小操作序列
問題描述 N×N網格,目標每格顏色為黑(X)或白(O)。魔法刷: - 將整行刷黑(R#) - 將整列刷白(C#) 每行/列最多刷一次。初始顏色非黑非白。求操作序
HDU 1429 勝利大逃亡(續):狀態壓縮BFS最短路徑
問題描述 n×m地牢(≤20×20),牆(*)、路(.)、起點(@)、出口(^)、門(A-J)、鑰匙(a-j)。 每分鐘移動到相鄰格子。魔王每t分鐘巡視一次,*
POJ 2299 逆序對計數:歸並排序分治法O(n log n)求解
問題描述 給定數列,只能交換相鄰元素,求將其排為升序所需的最小交換次數。 等價於求**逆序對數量**:`i a[j]` 的對數。 歸並排序分治思想 在歸並過
NYOJ 643 發短信:T9九鍵盤編碼/解碼雙向轉換
問題描述 手機九鍵盤輸入:數字鍵2-9對應字母,按壓次數決定字母。空格用0。 雙向轉換: 1. **編碼**:大寫字母/空格 → 按鍵序列(字母間空格分隔) 2
Java ArrayList核心實現原理:動態數組擴容機制
簡化版ArrayList實現 public class ArrayList { Object[] objects = new Object[10]; /
二維碼與NFC技術對比:從成本、原理到應用場景的深度分析
核心差異一覽 維度二維碼NFC 原理光學識別編碼圖案近場電磁感應通訊 載體紙/屏幕上的圖案標簽芯片/手機內置 讀寫性**只讀**(需重印修改)**可讀寫**(
C++虛函數與純虛函數:多態機制核心解析
1. 虛函數:實現動態綁定 問題場景 class People { public: void walk() { cout << People walk; } }
C++ static成員詳解:靜態局部變量與類靜態成員
1. static局部變量 函數內部聲明,生命週期贯穿整個程序,初始化僅一次(首次經過定義語句時)。 size_t count_calls() { st
C++運算符重載:二元運算符重載詳解與三種實現模式
二元運算符重載形式 表達式 `a @ b` 可解釋為: 成員函數:`a.operator@(b)` 友元/全局函數:`operator@(a, b)` 三
STL容器適配器詳解:stack、queue、priority_queue
適配器概念 適配器基於順序容器(vector/list/deque)封裝特定接口,**不提供迭代器**,不支持批量插入刪除。 1. queue(隊列,FIFO