題目大意:中文題,略
題目思路:區間dp
這個題是問需要新增多少個括號使之成為合法括號序列,那麼我們可以先求有多少合法的括號匹配,然後用字串長度減去匹配的括號數就行
狀態轉移方程主要是對於我們列舉的區間 dp[i][j],如果 i 和 j 處的括號能夠匹配,則dp[i][j]=dp[i+1][j-1]+1;
因為我們是從小到大列舉長度,所以小長度的區間一定是最優的,所以當 i 與 j 匹配時,則是子區間的最優值+1
#include #include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define lson root<<1,l,mid
#define rson root<<1|1,mid+1,r
#define fi first
#define se second
#define ping(x,y) ((x-y)*(x-y))
#define mst(x,y) memset(x,y,sizeof(x))
#define mcp(x,y) memcpy(x,y,sizeof(y))
using
namespace
std;
#define gamma 0.5772156649015328606065120
#define mod 1000000007
#define inf 0x3f3f3f3f
#define n 100005
#define maxn 1050typedef pair
pii;
typedef
long
long
ll;int
n,m,cnt,temp,ans;
char str[1000
];int dp[105][105
];int
main()
}printf(
"%d\n
",len-dp[1][len]*2
); }
return0;
}
codevs 3657 括號序列
時間限制 1 s 空間限制 256000 kb 題目等級 gold 題目描述 description 我們用以下規則定義乙個合法的括號序列 1 空序列是合法的 2 假如s是乙個合法的序列,則 s 和 s 都是合法的 3 假如a 和 b 都是合法的,那麼ab和ba也是合法的 例如以下是合法的括號序列 ...
CODEVS 3657 括號序列
問題描述 我們用以下規則定義乙個合法的括號序列 1 空序列是合法的 2 假如s是乙個合法的序列,則 s 和 s 都是合法的 3 假如a 和 b 都是合法的,那麼ab和ba也是合法的 例如以下是合法的括號序列 以下是不合法括號序列的 現在給定一些由 構成的序列 請新增盡量少的括號,得到乙個合法的括號序...
codevs 3657 括號序列
題目描述 description 我們用以下規則定義乙個合法的括號序列 1 空序列是合法的 2 假如s是乙個合法的序列,則 s 和 s 都是合法的 3 假如a 和 b 都是合法的,那麼ab和ba也是合法的 例如以下是合法的括號序列 以下是不合法括號序列的 現在給定一些由 構成的序列 請新增盡量少的括...