題意:中文.....
思路:pku有一道題,經典的括號匹配(區間dp)題目,那道題目是求的最長滿足條件的子串的長度,那裡的子串與這裡的子串條件不一樣。
詳細:對於這個例子
)((())))(()())pku的最長子串是12
而這裡是6
這裡我們是求的連續的滿足的子串。
dp[i]表示0到i的最長的滿足的連續的子串
則有:if(str[i - dp[i - 1] - 1] == '(' && str[i] == ')') dp[i] = dp[i - dp[i - 1] - 1] + 2;
if (dp[i - dp[i - 1] - 2])
dp[i] += dp[i - dp[i - 1] - 2]
//#pragma comment(linker,"/stack:327680000,327680000")
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define cl(arr, val) memset(arr, val, sizeof(arr))
#define ll long long
#define inf 0x7f7f7f7f
#define lc l,m,rt<<1
#define rc m + 1,r,rt<<1|1
#define pi acos(-1.0)
#define ll long long
#define l(x) (x) << 1
#define r(x) (x) << 1 | 1
#define mid(l, r) (l + r) >> 1
#define min(x, y) (x) < (y) ? (x) : (y)
#define max(x, y) (x) < (y) ? (y) : (x)
#define e(x) (1 << (x))
#define iabs(x) (x) < 0 ? -(x) : (x)
#define out(x) printf("%i64d\n", x)
#define lowbit(x) (x)&(-x)
#define read() freopen("din.txt", "r", stdin)
#define write() freopen("dout.txt", "w", stdout);
#define n 1000007
using namespace std;
int dp[n];
int ans,num;
char str[n];
int n;
int main()
}if (ans < dp[i])
else if (ans == dp[i]) num++;
}if (ans == 0) printf("0 1\n");
else
printf("%d %d\n",ans,num);
}return 0;
}
14 5繼承與組合
程式的版權和版本宣告部分 檔名稱 a.cpp 作 者 孔雲 完成日期 2014年5月29日 版 本 號 v1.0 輸入描述 num,name,year,month,day 和修改後的year,month,day 問題描述 1 birthdate 生日類 含有 year,month,day 等資料成員...
1 4 5 收集trace日誌
trace日誌有助於發現故障的詳細資訊,確認問題原因 影響範圍 故障現象。前提條件 alert日誌提及到的一些trace日誌和incident trace檔案,要一併收集。操作步驟 步驟 1 以oracle使用者登入。步驟 2 根據alert日誌中提示所涉及的trace日誌檔案,收集trace日誌。...
145 僅僅反轉字母
題目描述 給定乙個字串 s,返回 反轉後的 字串,其中不是字母的字元都保留在原地,而所有字母的位置發生反轉。示例 1 輸入 ab cd 輸出 dc ba 示例 2 輸入 a bc def ghij 輸出 j ih gfe dcba 示例 3 輸入 test1ng leet code q 輸出 qed...