题目

https://oj.xjtuicpc.com/problem/1193

恋恋天下第一!(然而本菜鸡总是被阿空锤死而根本开不了normal)TAT

思路

挺吓人的一道题,看起来很像是要匹配加字符串算法乱搞。但是既然放在套题的第一道想必其实是简单题。(2e6的数据范围基本上是线性算法了,除非出题人卡常)

反正我什么字符串算法都不会,那不妨暴力乱搞一波。我们令\(n=strlen(S),m=strlen(T)\)

考虑S[0]作为前缀,那显然新增种数为\(m\),没有任何重复。

S[1]作为前缀时哪些会重复呢?我们手玩一下数据。S="ababa" T="babab"

ababa babab

a babab

a abab

a bab

a ab

a b

ab babab

ab bab

ab b

不难发现,如果当前的前缀是S[0]到S[i],后缀为T[j]到T[m],当T[j-1]==S[i]时它与之前的情况重复掉了,没有贡献。

所以我们只要对每个字母x预处理出T中有多少后缀使得它前面一位是x即可。

代码

点击查看代码
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define maxn 2000010
#define ll long long
using namespace std;
char S[maxn],T[maxn];
int cnt[26];
int main(){
int n,m,i,j;
ll ans=0;
scanf("%s%s",S,T);
n=strlen(S);
m=strlen(T);
for(i=0;i<m-1;++i) cnt[T[i]-'a']++;
ans+=m;
for(i=1;i<n;++i){
ans+=m-cnt[S[i]-'a'];
}
printf("%lld",ans);
// system("pause");
return 0;
}

最新文章

  1. Codeforces Round #347 (Div. 2) (练习)
  2. ProgressDialog的使用
  3. 修改使用phpstorm创建的模板的默认注释
  4. [Git] 快速签出与更新所有远程分支.md
  5. linux下so动态库一些不为人知的秘密(中)
  6. Oracle锁表查询与解锁
  7. 未找到约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryServiceRequiredTypeIdentity匹配的导出的解决办法
  8. Linux安装python3.6
  9. 关于java多线程中异常捕获的理解
  10. STM32终端优先级,看过很多感觉这个写的直白易懂
  11. JS中的事件(对象,冒泡,委托,绑定)
  12. Android下WPS打开Excel2007版也有问题
  13. 25条提高iOS App性能的技巧和诀窍
  14. &quot;废物利用&quot;也抄袭——废旧喷墨打印机和光驱DIY&quot;绘图仪&quot;
  15. Canvas帧数和步长实例
  16. 【成端更新线段树模板】POJ3468-A Simple Problem with Integers
  17. Oracle用游标删除重复数据
  18. HDU 4116 Fruit Ninja ( 计算几何 + 扫描线 )
  19. async-http
  20. 奥巴马(Obama)获胜演讲全文[中英对照]+高清视频下载

热门文章

  1. Spring随意总结
  2. 流(stream)如何理解?
  3. linux下yum安装时出现Loaded plugins: fastestmirror
  4. ES使用
  5. SQL server自动创建日历表。
  6. 备份docker mysql数据库
  7. [洛谷/题目] P1562 还是N皇后
  8. 抽取JDBC工具类:JDBCUtils
  9. ChatGPT检测器开发者在知乎的文章,记录一下
  10. win10 打开剪切板失败 拒绝访问 已解决!!