#include#include#include
using
namespace
std;
#define maxn 55
#define inf 0x3f3f3f3f
#define mid ((l+r)>>1)
int n,f[maxn][maxn][2
];//
不妨處理每個子串時,我們都在它的前面放乙個m,最後答案長度-1即可
//f[l][r][0]表示子串[l,r]中除了前面的m,串中還存在其他的m的最短長度
//f[l][r][1]則表示只有前面乙個m的最短長度
/*三個轉移方程:
1.if(該串左右兩半相同)
f[l][r][1]=min(f[l][r][1],f[l][mid][1]+1); 壓縮與不壓縮
2. i l~r-1
f[l][r][1]=min(f[l][r][1],f[l][i][1]+r-i);
3. i l~r-1
f[l][r][0]=min(f[l][r][0],min(f[l][i][0],f[l][i][1])+min(f[i+1][r][0],f[i+1][r][1]));
*/char
s[maxn];
int dp(int l,int r,bool
op)
if(flag) d=min(d,dp(l,mid,1)+1
);
for(int i=l;i)
d=min(d,dp(l,i,1)+r-i);
}else
for(int i=l;i)
d=min(d,min(dp(l,i,0),dp(l,i,1))+min(dp(i+1,r,0),dp(i+1,r,1
)));
returnd;}
intmain()
洛谷P2472 SCOI2007 蜥蜴 題解
這道題用最大流解決。首先構建模型。一根柱子可以跳入和跳出,於是拆成兩個點 入點和出點。每一根柱子的入點和出點連一條流量為高度的邊,來限制蜥蜴跳入的次數。當柱子a可以調到柱子b時,就從a的出點向b的入點連邊,流量inf。s向所有有蜥蜴的柱子的入點連邊,流量為1 t表示地圖外一點,當一根柱子能跳到地圖外...
洛谷P2472 SCOI2007 蜥蜴 題解
這道題用最大流解決。首先構建模型。一根柱子可以跳入和跳出,於是拆成兩個點 入點和出點。每一根柱子的入點和出點連一條流量為高度的邊,來限制蜥蜴跳入的次數。當柱子a可以調到柱子b時,就從a的出點向b的入點連邊,流量inf。s向所有有蜥蜴的柱子的入點連邊,流量為1 t表示地圖外一點,當一根柱子能跳到地圖外...
洛谷P4467 SCOI2007 k短路 題解
題目傳送門 題目大意 求乙個圖中起點到終點的簡單路中的第k短路,以長度為第一關鍵字,經過城市的字典序為第二關鍵字。思考過程 我們肯定是無法把所有的情況都求出來再排個序解決的,所以只能估計每條路徑的長度,盡量早地求出前k短路,也就是用a 演算法。具體做法 首先將所有邊反向,從終點跑一遍是spfa,將每...