原创 uva 11584 劃分迴文串

線性DP問題 設d【i】代表a【0:i】字符構成的串中劃分成迴文串的最小個數 則有狀態轉移方程:d【i】=min{d【j】+1|a【j+1:i】爲迴文串} 可以這麼理解方程:d【i】表示【0:i】範圍的最優方案,由最優子結構

原创 UVA 10003 cutting sticks

典型的區間型DP #include <iostream> #include<algorithm> #include<stdio.h> #include<string.h> #include<sstream> using names

原创 快速排序的一個優雅的實現

//快速排序 void quick_sort(int s[], int l, int r) { if (l < r) { //Swap(s[l], s[(l + r) / 2]); //將中間的這個數和第一個數

原创 迪克斯特拉算法詳解及C++實現

算法步驟如下: G={V,E} 1. 初始時令 S={V0},T=V-S={其餘頂點},T中頂點對應的距離值 若存在<V0,Vi>,d(V0,Vi)爲<V0,Vi>弧上的權值 若不存在<V0,Vi>,d(V0,Vi)爲∞ 2. 從

原创 UVA 725 除法

題目描述:https://vjudge.net/problem/UVA-725 此題採用暴力枚舉法。沒必要枚舉0~9的所有排列。只需要枚舉fghij就可以算出abcde,然後判斷是否所有數字都不相同即可。不僅程序簡單,而且枚舉量也

原创 UVA 11509 最大乘積

題目描述:https://vjudge.net/problem/UVA-11059 暴力求解類問題 連續子序列有兩個要素:起點和終點,因此只需枚舉起點和終點即可。由於每個元素的絕對值不超過10且不超過18個元素,最大可能的乘積不

原创 本地和oj同樣數據測出來不同結果的原因

1.11在做codevs1014裝箱問題的時候,由於我編程水平不夠,發生了一件令當時的我匪夷所思的事。特此記錄,防止今後在出現類似問題。 題目描述 Description: 有一個箱子容量爲V(正整數,0<=V<=20000),

原创 codevs1014 裝箱問題

題目描述 Description 有一個箱子容量爲V(正整數,0<=V<=20000),同時有n個物品(0<n<=30),每個物品有一個體積(正整數)。 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間爲最小。 輸入描述 I

原创 uva1625 顏色的長度

注意每次循環中對d數組的初始化,不需要調用 memeset(d,-1,sizeof(d)); 因爲d數組申請了maxl=5000+10的空間大小,這個語句在實際執行會很耗時間。而且也並不是d數組所有的空間都需要初始化。只初始化會用

原创 UVA 10976 分數拆分

題目描述:https://vjudge.net/problem/UVA-10976 既然要求找出所有的x、y,枚舉對象自然就是x、y了。可問題在於,枚舉的範圍如何?從1/12=1/156+1/13可以看出,x可以比y大很多。難道要

原创 UVA 1626 括號序列

題目描述:https://vjudge.net/problem/UVA-1626 設串S至少需要增加d(S)個括號,轉移如下: 如果S形如(S′)或者[S′],轉移到d(S′)。 如果S至少有兩個字符,則可以分成AB,轉移到d

原创 uva116 tsp

題目描述:————————————————————————- 在這個題目中,每一列就是一個階段,每個階段都有3種決策:直行、右上和右下。 多階段決策的最優化問題往往可以用動態規劃解決,其中,狀態及其轉移 類似於回溯法中的解答

原创 uva1347 tour

題目描述:———————————————————————————- “從左到右再回來”不太方便思考,可以改成:兩個人同時從最左點出發,沿着兩條不同 的路徑走,最後都走到最右點,且除了起點和終點外其餘每個點恰好被一個人經過。這樣

原创 uva 12563 勁歌金曲

先介紹自己寫的,比較循規蹈矩的方法。dp(i,j)表示必須在j時間內結束,在i,i+1,,,,n首歌中選擇,可以唱的最大歌曲數 (包含jq) sing(i,j)表示在這個狀態、歌曲數取最大的情況下,可以唱的最長時間 (包含jq

原创 uva11400 照明系統設計

通過這個題目我以爲我了發現數據結構課本快排代碼的一個bug。 書上的快排代碼: template <class T> void quickSort(T a[], int leftEnd, int rightEnd) {// So