原创 算法競賽入門經典 例題9-3 硬幣問題

/*算法競賽入門經典 例題9-3 硬幣問題 * d[i]表示從i出發到結點0的最長路徑長度 d[0]=0 * 固定起點s 固定終點0 * 狀態轉移方程: d[i] = max{d[j] + 1} * */ i

原创 算法競賽入門經典 例題 9-4

/*算法競賽入門經典 例題 9-4 * 問題:求以c爲起點的邊權之和最大的路徑 * 0-1揹包之物品無限 d[i]表示以i爲起點的最大路徑 d[i] = max{d[j] + w[i]} * */ import java

原创 10801 - Lift Hopping

/*10801 - Lift Hopping * 以每一層樓爲頂點,每個電梯可以到達的兩層樓之間的秒數爲每一條邊的權值, * 以此構建一個無向圖。然後利用dijkstra求出最短的時間, * 注意每次換乘電梯需要等待60s(注意初始

原创 基於鄰接表和優先級隊列的Dijkstra算法實現

/*基於鄰接表和優先級隊列的Dijkstra算法實現 * */ import java.util.Arrays; import java.util.Comparator; import java.util.PriorityQueue;

原创 UVa 10130 - SuperSale

import java.util.Scanner; class Main { public static void main(String[] args) { int t; Scanner scanner = new Sca

原创 裝配線調度問題

/*裝配線調度問題*/ public class AssemblyLine { public static final int N = 6; public static void main(String[] args) { int

原创 最優矩陣鏈乘

public class MatrixChain { public static final int N = 6; public static void main(String[] args) { int[] p = new i

原创 UVa 624 CD

import java.util.Scanner; /* * UVa 624 CD * */ class Main { public static void main(String[] args) { Scanner scan

原创 UVa 10304 - Optimal Binary Search Tree

/*UVa 10304 - Optimal Binary Search Tree * e(i,j)爲搜索一棵包含節點f[i]...f[j]的最優二叉搜索樹的代價 * 如果區間規模增大,則要選出一個新的根節點,而區間上除了根節點左右最優

原创 UVa 103 - Stacking Boxes

/*UVa 103 - Stacking Boxes * */ import java.util.Arrays; import java.util.Scanner; class Main { public static final

原创 UVa 10003 - Cutting Sticks

import java.util.Arrays; import java.util.Scanner; /*UVa 10003 - Cutting Sticks * 最小矩陣鏈成類似 狀態轉移方程 f(i,j) = min {f(

原创 UVa 111 - History Grading

/*UVa 111 - History Grading * 最長公共子序列 * */ import java.util.Scanner; class Main { static final int MAX = 25; publ

原创 UVa 10404 - Bachet's Game

/*UVa 10404 - Bachet's Game * d[i]=1表示Stan贏, d[i]=0表示輸 那麼只要有一個j使得d[i-arr[j]]==0那麼d[i]=1; * */ import java.util.Scan

原创 算法競技賽入門經典 11.1.1 無根樹轉化爲有根樹

/*算法競技賽入門經典 11.1.1 無根樹轉化爲有根樹 * */ import java.util.Scanner; import java.util.Vector; public class TreeConvert { stat

原创 算法競賽入門經典 例題9-5 0-1 揹包

/*算法競賽入門經典 例題 9-5 0-1揹包問題 * f(i,j) 表示 “把前i個物品裝到容量爲j的揹包的最大總重量” * f(i,j) = max{f(i-1,j),f(i-1,j-v[i])+w(i)} * n 表示物品個數