原创 [DP] poj1836

  /* 題意知道N個人身高 h[1..n]; 要求是的形成一個 h[1]<h[2]<...<h[x]>=h[x+1]>h[x+2]>..的隊列 且出列的人最少 2個最長升序列,枚舉中間2個點。 */  import java.util

原创 [DP] poj1260

/* 題意:已知每種珍珠需要幾個,花費多少 買珍珠的花費爲(need[x1]+need[x2]+...+10)*max(cost[x1],cost[x2],....) 10爲定值 求買完所有珍珠最小的花費 */ import java.

原创 [DP] boj1440

/* * 在一條直線上擺着N堆石子,現要將石子有序的合併成一堆, * 規定如下:每次只能移動相鄰的2堆石子合併,合併花費爲將的一堆石子的數量。 * 設計一個算法,將這N堆石子合併成一堆的總花費最小(或最大)。 * 那麼最優子結構

原创 [DP] boj1670

/* Description dalong最近對漢密爾頓路很感興趣,現在他給你一個包含n個點的無向圖, 對於一條路徑a1->a2...->ak,他定義這條路徑的花費值value = a1*a2*...*ak。 漢密爾頓路定義:給定圖G,若

原创 Java - Queue Stack

import java.math.*; import java.util.*; import java.io.*; public class Main { public static void main(String args[])

原创 數據結構作業。

#include<iostream> #include<cstdio> #include<cstring> #define see(x) cout<<#x<<":"<<x<<endl; using namespace std; const

原创 第一次寫樹。。。純當紀念吧。。只有1個節點要特判內牛滿面。。

#include<iostream> #include<cstring> #include<cstdio> #include<queue> using namespace std; struct Node { int lc,rc,

原创 [DP] poj1080

O(n^2) /*poj1080 Sample AGTGATG -GTTA-G score : (-3)+5+5+(-2)+5+(-1) +5=14. 每次讀入2個字符串只有A,T,C,G 可以做3個操作:

原创 [DP] poj1837

/*題目意思是給你一個balance, 共有C個位置, G個砝碼, 問你總共有多少種方法使balance左右平衡(每一種方法中砝碼都要用完)。 狀態方程dp[i][j] 表示使用前i個砝碼, 不平衡數爲j的方法數(j>0 表示右邊比左邊重

原创 [DP] poj2353

/* 題意是 有N層,每層M個房間,每個房間有花費, 從第1層走向第N層,可以向上、左、右方向走。 輸出使得花費最小的路徑 */ #include<iostream> #include<cstdio> #include<cstring>