牛客练习赛42A(字符串)

传送门

结论是:一定是选取最长的那个AB连续子串。

把题面要求的a*b + a + b转化一下成(a + 1)*(b + 1) - 1,即可发现如果选取前缀后缀不连续的两段作为答案,则显然有更优解,即两段中较长的一段作为答案。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main() {
 5     ios_base::sync_with_stdio(0);
 6     cin.tie(0);
 7     
 8     string s, t;
 9     long long ans = 0, last = 0;
10     cin >> s >> t;
11     for (int i = 0; i < s.length(); i++) {
12         if (s[i] == t[i]) {
13             last++;
14         } else {
15             last = 0;
16         }
17         ans = max(ans, last);
18     }
19     cout << (ans + 1) * (ans + 1) - 1 << endl;
20 }

 

posted @ 2019-03-16 08:58  AlphaWA  阅读(189)  评论(0编辑  收藏  举报