Codeforces 91A-Newspaper Headline
Codeforces 91A Newspaper Headline
题目原址
[http://codeforces.com/problemset/problem/91/A]
题意
给两条字符串s1,s2。问你是否能用n条s1按顺序排成一条新的字符串,并从其中去掉任意个字符来得到s2,如果能,输出最小的n,否则输出-1
题解
预处理s1,用一个数组 a[i][j] 来表示在字符串s1下标大于等于i的部分中,下一个编号为j的字母的下标,无则用-1表示。
然后扫一遍s2,相同则下标增加,不同则跳转到相同为止,根据状况来增加答案。
(让循环完成后,s1[j]总要与s2[i]相同,这样不容易出错)
代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
const int maxn = 1e6+7;
const int maxm = 1e4+7;
char s1[maxm],s2[maxn];
int a[maxm][26],b[26];
int main(){ios::sync_with_stdio(false);#ifdef LOCALfreopen("in.txt","r",stdin);freopen("out.txt","w",stdout);#endif // LOCALwhile(cin>>s1>>s2){int len1=strlen(s1);int len2=strlen(s2);memset(b,0,sizeof(b));memset(a,-1,sizeof(a));b[s1[len1-1]-'a']++;for(int i=len1-2;i>=0;i--){b[s1[i]-'a']++;for(int j=0;j<26;j++)a[i][j]=(j==s1[i+1]-'a')?i+1:a[i+1][j];a[i][s1[i]-'a']=i;}
// for(int i=0;i<len1;i++){// for(int j=0;j<26;j++)
// printf("%d ",a[i][j]);
// printf("\n");
// }int flag=0;for(int i=0;i<len2;i++)if(!b[s2[i]-'a']){flag=1;break;}if(flag){printf("-1\n");continue;}int ans=1,j=0;for(int i=0;i<len2;i++,j=(j+1)%len1){if(s1[j]!=s2[i])if(a[j][s2[i]-'a']!=-1)j=a[j][s2[i]-'a'];else{ans++;j=a[0][s2[i]-'a'];}
// printf("i=%d j=%d,ans=%d\n",i,j,ans);if(j==len1-1&&i!=len2-1)ans++;}printf("%d\n",ans);}
}
Codeforces 91A-Newspaper Headline相关推荐
- Codeforces 91A Newspaper Headline
A. Newspaper Headline time limit per test:2 second memory limit per test:256 megabytes input:standar ...
- 算法偏见是什么_算法可能会使任何人(包括您)有偏见
算法偏见是什么 在上一篇文章中,我们展示了当数据将情绪从动作中剥离时会发生什么 (In the last article, we showed what happens when data strip ...
- GO语言实现设计模式【全】
文章目录 0.前言 1.责任链模式 概念 示例 登机过程 测试程序 运行结果 2.命令模式 概念 示例 电饭煲接收器 电饭煲命令 测试程序 运行结果 3.迭代器模式 概念 示例 班级成员 运行结果 4 ...
- Dubious Document
问题 K: Dubious Document 时间限制: 1 Sec 内存限制: 128 MB 提交: 34 解决: 28 [提交][状态][讨论版][命题人:admin] 题目描述 Snuke ...
- 平常水题 - Atcoder 058 - C - 怪文書 / Dubious Document(字符串的处理)
C - 怪文書 / Dubious Document Time limit : 2sec / ...
- ENG Note 1 : 英语写作模板
英语写作模板:引入==>论证(论点.论据)==>呼应 第一段的写法:引入(第一句)-引起关注(第二句) Just as an old proverb says,where there is ...
- GO 语言实现设计模式【全】
文章目录 0.前言 1.责任链模式 概念 示例 登机过程 测试程序 运行结果 2.命令模式 概念 示例 电饭煲接收器 电饭煲命令 测试程序 运行结果 3.迭代器模式 概念 示例 班级成员 运行结果 4 ...
- wi-fi以连接但无法上网_Wi-Fi无法扩展以弥合数字鸿沟
wi-fi以连接但无法上网 Access to the Internet is poor across the nation. There's a Digital Divide that has so ...
- java判断日文_判断字符串是否含有日文
日文字符的Unicode编码范围是: U+3040–U+309F: Hiragana U+30A0–U+30FF: Katakana U+4E00–U+9FBF: Kanji 所以我们只需要对每一个字 ...
最新文章
- win7设置java环境变量_win7下JAVA环境变量配置方法
- 全站HTTPS简单实践
- 第一次spring,第三天。
- vxWorks下常用的几种延时方法
- 367. 有效的完全平方数(二分法)
- JavaFX官方教程(四)之Hello World,JavaFX样式
- linux的常用操作——vim和vi
- 外设驱动库开发笔记16:MS5536C压力变送器驱动
- Java后台入坑二:renrenfast后台打包和前端打包运行
- 知识蒸馏(Knowledge Distillation)
- 关于农历闰月年份的口诀
- wordpress优化title的seo技巧
- 【定制项目】【M13】【数据监控 + 数据分析 + 可视化大屏】- 关键技术 python flask + pandas + echarts + excel
- 怎么进入 BAT 的研发部门?
- 使用TeamView远程电脑无法操作的问题处理
- 淘宝非标品类目商品开车如何选词?[淘宝插旗、创建订单api]
- 英特尔的Linux Xe内核图形驱动程序
- (转)爱剪辑学习记录_快速剪辑视频
- java验证iap支付收据
- 数值最优化—无约束问题信赖域算法