题解 3154: 蓝桥杯2023年第十四届省赛真题-子串简写

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

c++ 用string内置函数

摘要:解题思路:先扫一遍,把c1的下标存入vector数组,然后再从后往前扫一遍,当找到c2,并且c2的下标i>=k-1(保证字符串有那么长)时,用string的成员函数rfind从c2往左找第一个c1,再……

暴力写法优化

摘要:解题思路:注意事项:参考代码:#include <bits/stdc++.h>using namespace std;int main(){ long re=0; ……

二分法求解

解题思路:首先字符串是s,两个连接字符是c1和c2而我们可以发现对于每个c1都会有一个c2(下标记为pos)可以使得pos之后的字符串都能满足条件,发现了没有很像二分的思路,先用a,b数组保存c1,c2的下标再选定a[i]对b做二分即可(注意一个都没有的情况说明之后都找不到任意b[i]-a[i]+1>

子串简写的两种解题思路:1:前缀和O(n);2:双指针O(n)

解题思路:对于前缀和,我们用L和R表示字符串的左端点和右端点;我们用一个前缀和数组s[N]来维护a出现的次数,表示在第i位之前有多少个a。处理完后直接将字符串从后往前枚举,如果找到一个b,则可以匹配前面s[i-k+1]个a;把这些数累加起来即可解题对于双指针,

前缀和秒杀

摘要:解题思路:注意事项:边界参考代码:#include <bits/stdc++.h> #define int long long #define rep(i, j, n) for (int i = ……

优化的双重循环

###小菜niao第一次写题解,希望各位dalao勿喷。####大家一开始的思路如果是直接暴力两层for循环,但由于此题的数据范围较大,如果不进行优化必定会超时!###解题思路:虽然我的方法也是两层for循环,但是我在两处地方进行了**优化**,最后也是AC了。

3154 字符简写(新手上路,求大佬指正)(动态规划)

解题思路:对于输入的数据我们只需要辨别是否是字符c1和c2。对一个符合题目要求的子串来说,结尾一定是c2字符,开头为c1字符。因此只需要将每个c2字符前c1字符的个数相加即可。同时子串有长度n的限制,因此只能统计每个c2字符n-1个字符位置前的c1字符个数,