原创 [線性動態規劃][最長上升/下降序列][P1091 合唱隊形]線性動態規劃做題理解和總結

P1091 合唱隊形 做題思路 首先根據題目描述可知,很明顯的一個求最長公共子序列問題,對第i位同學左邊求最長上升子序列,對右邊求最長不上升子序列,利用動態規劃思想,最後求出兩者相加最大的第i位。最終求出答案。 代碼: #include

原创 P3045 [USACO12FEB]牛券Cow Coupons 貪心+優先隊列

題目鏈接 貪心思路: 0.貪心撤回 1.首先如果所有的奶牛都使用了優惠券,那麼優惠價格最少的前K個奶牛是必定包含在最終答案中的。如果情況不是這樣,就意味着有一張優惠券用在了K+1到N區間的奶牛上,但是前K個奶牛中的那一個不選,顯然這是不划

原创 [SCOI2009][數位DP]windy數 思路詳解

題目鏈接 題面 windy定義了一種windy數。不含前導零且相鄰兩個數字之差至少爲2的正整數被稱爲windy數。 windy想知道, 在A和B之間,包括A和B,總共有多少個windy數? 思路 1.由於是計算[A,B]間windy數字,

原创 [01分數規劃]POJ2976 Dropping tests]經典二分題-01分數規劃

題目鏈接 題目描述 給定N個元素,每個元素含有A[i],B[i],取其中N-K個元素得到:,最大化這個值. 分析 使用二分答案:二分一個值V,使得,化簡: 那麼可以在二分的check函數中選擇前N-K個最大的(),檢查是否大於等於0. 注

原创 ST表學習

ST表原理和實現 ST表是一種用於解決RMQ(Range Minimum/Maximum Query,即區間最值查詢)問題的離線算法與線段樹相比,預處理複雜度同爲O(nlogn),查詢時間上,ST表爲O(1),線段樹爲O(nlogn)。

原创 C++快讀代碼

inline int ReadIn(void) { int sum = 0; int sign = 1; char ch = getchar(); while(ch > '9' || ch < '0') { if(ch

原创 鏈式前向星代碼

int Head[MAXN] = {0}; int count = 0; struct _Edge { int u; int v; int next; }; _Edge Edge[MAXN*2]; //存邊(無向圖存兩次)

原创 快速冪代碼

int Quikpow(int a,int b) { int ans = 1; while(b) { if(b&1) { ans = (ans*a)%mod

原创 [深度優先搜索]P1378 油滴擴展

題目 題目描述 題目描述 在一個長方形框子裏,最多有N(0≤N≤6)個相異的點,在其中任何一個點上放一個很小的油滴,那麼這個油滴會一直擴展,直到接觸到其他油滴或者框子的邊界。必須等一個油滴擴展完畢才能放置下一個油滴。那麼應該按照怎樣的順序

原创 題解 P2123 【皇后遊戲】

轉載自:https://www.luogu.org/blog/liuzibujian/solution-p2123 洛谷p2123 前言 這是一道省選/NOI-的題目,我認爲這道題確實有這麼難。很多人認爲沒有這麼難,那是因爲他們的做法並不

原创 [貪心模擬]P1233 木棍加工

題目地址 題目描述 一堆木頭棍子共有n根,每根棍子的長度和寬度都是已知的。棍子可以被一臺機器一個接一個地加工。機器處理一根棍子之前需要準備時間。準備時間是這樣定義的: 第一根棍子的準備時間爲1分鐘; 如果剛處理完長度爲L,寬度爲W的棍子,

原创 [動態規劃][揹包問題][P1156 垃圾陷阱]做題思路和總結

題目描述 卡門――農夫約翰極其珍視的一條Holsteins奶牛――已經落了到“垃圾井”中。“垃圾井”是農夫們扔垃圾的地方,它的深度爲D(2≤D≤100)英尺。 卡門想把垃圾堆起來,等到堆得與井同樣高時,她就能逃出井外了。另外,卡門可以通過

原创 [HNOI2008]越獄 數學排列組合+快速冪

題目描述 監獄有連續編號爲 1…N 的 N 個房間,每個房間關押一個犯人,有 M 種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄。   思路 首先考慮到這是一道數學題,根據乘法原

原创 [DAG動態規劃][Uva 116 單向TSP]題目做題思路和收穫

  UVA 116 題目描述PDF   思路 這道題其實是一道特殊的DAG類動態規劃;題目要求只能向右走,且只能向右上,右,右下三個方向,同時上部和下部是聯通的;   1.動態規劃求最小值 首先想到用DP[i][j]表示到達每一個點要用的

原创 [多維動態規劃][NOIP2000 方格取數][NOIP2006 傳紙條]四維動態規劃做法.

方格取數 思路 由題意可以想到用動態規劃數組DP[i][j][k][l]表示走到A(i,j),B(k,l). 那麼,對於某一步一共有四種情況: 路徑A向右,路徑B向下; 路徑A向右,路徑B向右; 路徑A向下,路徑B向右; 路徑B向下,路徑