diff --git a/14lanqiao/test7-1.cpp b/14lanqiao/test7-1.cpp new file mode 100644 index 0000000..3014c2d --- /dev/null +++ b/14lanqiao/test7-1.cpp @@ -0,0 +1,33 @@ +// lanqiao3514 字串简写(枚举) +#include +using namespace std; +#define int long long +signed main(){ + int k; + string s; + char a, b; + cin >> k >> s >> a >> b; + vector ft, bk; + for(int i = 0; i < s.size(); i++){ + if(a == s[i]) ft.push_back(i); + } + for(int i = 0; i < s.size(); i++){ + if(b == s[i]) bk.push_back(i); + } + int ans = 0; + for(int i = 0; i < ft.size(); i++){ + for(int j = 0; j < bk.size(); j++){ + if( bk[j] - ft[i] + 1 < k) continue; + else{ + ans += bk.size() - j; // 1 2 1 1 1 + break; // 找到一个符合条件的,直接把后面全加上,然后跳出此次循环 + } + } + } + cout << ans << endl; + return 0; +} +/* samples -> 6 +4 +abababdb a b +*/ \ No newline at end of file diff --git a/14lanqiao/test7-2.cpp b/14lanqiao/test7-2.cpp new file mode 100644 index 0000000..4adb9b4 --- /dev/null +++ b/14lanqiao/test7-2.cpp @@ -0,0 +1,21 @@ +// lanqiao3514 字串简写(前缀和优化) +#include +using namespace std; +#define int long long +signed main(){ + int k; + string s; + char a, b; + cin >> k >> s >> a >> b; + int ft = 0; + int bk = 0; + for(int i = 0, j = k - 1; j < s.size(); i++, j++){ + if(s[i] == a) ft++; + if(s[j] == b) bk += ft; + } + cout << bk << endl; +} +/* samples -> 6 +4 +abababdb a b +*/ \ No newline at end of file