這道題我是看題解2過的,但是對**的理解存在問題,所以自個口胡一下。
對於0與1兩種狀態,我們先考慮1:很明顯1要在0的基礎上進行,f[l][r][1]=min(f[l][r][1],min(f[l][k][0],f[l][k][1])+min(f[k+1][r][0],f[k+1][r][1])+1),這裡面的+1就是補m的操作,假如在l到r沒有對稱的話,這裡+1明顯不會作為答案,當+1作為答案時,前面兩個min一定是取了有r的情況,也就是說,我們把m和r的放入操作分開,m是因為r才放入的。這麼理解起來的話,前面0操作對m置之不理也就變得合理起來。
#include#include#include
#include
#include
using
namespace
std;
#define int long long
#define r register
#define debug printf("zjy\n")inline
intread()
while(isdigit(c))
return a*b;
}int n,f[100][100][2
];char s[100
];bool check(int l,int
r)
return
true;}
signed main()
}for(r int len=2;len<=n;len++)
}printf(
"%lld\n
",min(f[1][n][0],f[1][n][1
]));
return0;
}
SCOI2007 壓縮 題解
給乙個由小寫字母組成的字串,我們可以用一種簡單的方法來壓縮其中的重複資訊。壓縮後的字串除了小寫字母外還可以 但不必 包含大寫字母r與m,其中m標記重複串的開始,r重複從上乙個m 如果當前位置左邊沒有m,則從串的開始算起 開始的解壓結果 稱為緩衝串 bcdcdcdcd可以壓縮為bmcdrr,下面是解壓...
SCOI2007 修車 題解
上古網路流題 為了便於考慮每個決策的貢獻,把每個工人的決策拆成n個彼此獨立的決策 即其修的倒數第i個車是什麼。因為此車後 含此車 有i人要多等t,故貢獻為t n 以此拆點建圖,以貢獻為費用跑 二分圖 費用流即可,由費用流性質可知每人修車順序必合法 注意本題n,m順序有點反常 include incl...
SCOI2007 最大流 蜥蜴
非常直觀的建圖方法。對於有蜥蜴的格仔,從源點向該點連一條容量為1的邊,對於每個石柱拆點u,u 連邊u u 容量為石柱高度 對於任意兩個可以到達的石柱u,v,連邊u v,容量為inf 對於任意乙個可以跳出邊界的石柱,連邊u t,容量為inf 做一次最大流即為最多能逃出的蜥蜴數量 include inc...