HDU 6331 Walking Plan(分塊 動態規劃)
題意
給一個
n 個節點m 條邊的有向圖,第i 條邊的兩個端點為ui,vi ,邊的長度為wi ,q 次詢問,每次詢問從節點s 到t 至少走過k 條路徑的最小距離。
輸入
第一行包含一個整數
T(1≤T≤10) ,接下去有T 組資料,每組資料第一行為兩個整數n,m(2≤n≤50,1≤m≤104) ,接下去m 行每行三個整數ui,vi,wi(1≤ui,vi≤n,ui≠vi,1≤wi≤104) ,接著為一個整數q(1≤q≤10 ,接下去5)q 行每行三個整數si,ti,ki(1≤si,ti≤n,1≤k≤104) 。
輸出
對於每次詢問,輸出最短路徑長度,如果無法從節點
si 到達ti ,則輸出−1 。
樣例
輸入 |
---|
2 3 3 1 2 1 2 3 10 3 1 100 3 1 1 1 1 2 1 1 3 1 2 1 1 2 1 1 2 1 1 |
輸出 |
111 1 11 -1 |
題解
定義
G[i][j] 為從節點i 恰好經過1 步到達節點j 的最短距離(即原圖按輸入取最小值),無法到達設為∞ ,dis[k][i][j] 表示從i 點出發恰好經過k 步到達j 點的最短路徑,則有遞推式:
dis[0][i][j]={0∞i=ji≠jdis[k][i][j]=min(dis[k−1][i][u]+G[u][j]),u∈[1,n],k≠0 定義A[x][i][j] 表示從相關推薦
HDU 6331 Walking Plan(分塊 動態規劃)
題意 給一個 nn 個節點 mm 條邊的有向圖,第 ii 條邊的兩個端點為 ui,viui,vi,邊的長度為 wiwi,qq 次詢問,每次詢問從節點 ss 到 tt 至少走過 kk 條路徑的最小距離。 輸入 第一行包含一個整數 T(1
HDU6331&&18多校3M Walking Plan 【分塊+DP】
Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 633 Accepted Submissi
HDU 6331 Walking Plan
題意:n個點的圖,求s到t經過至少k條邊的最短路。 1<=n<=50 , 1<= k <=10000 設恰好經過k條邊的最短路為dis[k][i][j] 預處理很容易,但是TLE 發現dis[a+b][i][j] = min(dis[a][i]
[HDU 6331]Walking Plan
題解 #include<bits/stdc++.h> #define LL long long #define ull unsigned long long #define ULL ull #define mp make_pair #defin
NBUT校賽 J Alex’s Foolish Function(分塊+延遲標記)
not unit itl 標記 ccf 一次 pan -s foo Problem J: Alex’s Foolish Function Time Limit: 8 Sec Memory Limit: 128 MB Submit: 18 Solve
CodeChef February Challenge 2018 Chef and odd queries (分塊 + 主席樹)
turn () += -- oid sca com print const 題目鏈接 Chef and odd queries 題意 給定$n$個區間和$q$個詢問,每個詢問給定$m$個點,求這$n$個區間中有多少個包含了$m$個點中的奇數個。 分類操作。
[BZOJ3236][Ahoi2013]作業:樹套樹/(分塊+莫隊)
分析 第一問隨便搞,直接說第二問。 令原數列為\(seq\),\(pre_i\)為\(seq_i\)這個值上一個出現的位置,於是可以簡化詢問條件為: \(l \leq i \leq r\) \(a \leq seq_i \leq b\) \(pre_i < l\) 這是一個顯然
BZOJ5286 HNOI/AHOI2018轉盤(分塊/線段樹)
使用 lib 最優 其中 最小 ring tchar bzoj spa 顯然最優走法是先一直停在初始位置然後一次性走完一圈。將序列倍長後,相當於找一個長度為n的區間[l,l+n),使其中ti+l+n-1-i的最大值最小。容易發現ti-i>ti+n-(i+n),所以
HDU 1176(二維動態規劃)
分析: 和2084的數塔非常相似,不同的只是此題只用求三個數的最值。其實本質一樣的,即自頂向底找一條權值最大的路徑。理解數塔,這題也就更好理解了。 對於每一個位置,它下方的三個數是它下一秒可以到達的位置。 因此要求0秒5位置可以或得的最大值,只需自底向上
android 大檔案分割上傳(分塊上傳)
由於android自身的原因,對大檔案(如視訊檔案)的操作很容易造成OOM,即:Dalvik堆記憶體溢位,利用檔案分割將大檔案分割為小檔案可以解決問題。檔案分割後分多次請求服務。//檔案分割上傳 public void cutFileUpload(String
索引順序表查詢演算法(分塊查詢演算法)
演算法背景 有時候,可能會遇到這樣的表:整個表中的元素未必有序,但若劃分為若干塊後,每一塊中的所有元素均小於(或大於)其後面塊中的所有元素。我們稱這種為分塊有序。 對於分塊有序表的查詢 首先,我們需要先建立一個索引表,索引表中為每一塊都設定–索引項,每一個
【BZOJ1023】仙人掌圖(仙人掌,動態規劃)
轉移 tps 同時 HR code main 最大值 mes vector 【BZOJ1023】仙人掌圖(仙人掌,動態規劃) 題面 BZOJ 求仙人掌的直徑(兩點之間最短路徑最大值) 題解 一開始看錯題了,以為是求仙人掌中的最長路徑。。。 後來發現看錯題了一下就改過來了。。
OpenJ_Bailian 4103 踩方格(搜索 動態規劃 )
include 轉移 div spa pen ref 向上 opened .cn 題目傳送門OpenJ_Bailian 4103 描述 有一個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設:a. 每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上;b.
【BZOJ1093】[ZJOI2007]最大半聯通子圖(Tarjan,動態規劃)
() queue 有一個 ble class empty cpp 之間 names 【BZOJ1093】[ZJOI2007]最大半聯通子圖(Tarjan,動態規劃) 題面 BZOJ 洛谷 洛谷的討論裏面有一個好看得多的題面 題解 顯然強連通分量對於題目是沒有任何影響的,直接
【BZOJ2246】[SDOI2011]迷宮探險(搜尋,動態規劃)
【BZOJ2246】[SDOI2011]迷宮探險(搜尋,動態規劃) 題面 BZOJ 洛谷 題解 乍一看似乎是可以求出每個東西是陷阱的概率,然而會發現前面走過的陷阱是不是陷阱實際上是會對當前狀態產生影響的。考慮一下狀壓,因為出了是陷阱和不是陷阱,還有一種情況是未知。所以三進位制狀壓。 \(0\)表示是有
【日常刷題】[SCOI2005]掃雷(多維動態規劃)
[SCOI2005]掃雷 我們對於這道題,我們可以採用DP的方法來解決。 我們設f[i][0/1][0/1][0/1]表示滿足前i個條件限制,第i-1,i,i+1分別放(1)和不放(0)的方案數。 對於a[i](第二列的數字),我們採用分類討論的方法來進行狀態轉移。 當a[i
【日常刷題】郵票面值設計(搜尋與動態規劃)
郵票面值設計 對於這一道題目,我們可以採取搜尋的手段去列舉每一張郵票,再用動態規劃求得最大的連續數值。其中的難點就是如何進行列舉,至於動態規劃則僅僅是完全揹包的一個簡單變形。 搜尋:讓我們最後輸出的總數中要求從小到大按照次序輸入,那麼我們從小到大列舉即可。我們可以知道,數字1是必
【BZOJ5019】[SNOI2017]遺失的答案(FWT,動態規劃)
【BZOJ5019】[SNOI2017]遺失的答案(FWT,動態規劃) 題面 BZOJ 題解 發現\(10^8\)最多分解為不超過\(8\)個本質不同質數的乘積。 而\(gcd\)和\(lcm\)分別就是每個質因子的最大次冪和最小次冪的乘積。 那麼考慮一個狀壓\(dp\),設\(f[S1][S2]\)
BZOJ4770 圖樣(概率期望+動態規劃)
很好 getc const con () stream lin 復雜度 turn 考慮求出所有MST的權值和再除以方案數,方案數顯然是2mn。 按位考慮,顯然應該讓MST裏的邊高位盡量為0。那麽根據最高位是0還是1將點集劃分成兩部分,整張圖的MST就是由兩部分各自的
最大子段和與最長遞增子序列(貪心與動態規劃)
話不多說先上程式碼。。。。。 最大子段和 題目描述 給出一段序列,選出其中連續且非空的一段使得這段和最大。 輸入輸出格式 輸入格式: 第一行是一個正整數NNN,表示了序列的長度。 第二行包含NNN個絕對值不大於100001000010000的