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相关推荐

  1. Codeforces 91A Newspaper Headline

    A. Newspaper Headline time limit per test:2 second memory limit per test:256 megabytes input:standar ...

  2. 算法偏见是什么_算法可能会使任何人(包括您)有偏见

    算法偏见是什么 在上一篇文章中,我们展示了当数据将情绪从动作中剥离时会发生什么 (In the last article, we showed what happens when data strip ...

  3. GO语言实现设计模式【全】

    文章目录 0.前言 1.责任链模式 概念 示例 登机过程 测试程序 运行结果 2.命令模式 概念 示例 电饭煲接收器 电饭煲命令 测试程序 运行结果 3.迭代器模式 概念 示例 班级成员 运行结果 4 ...

  4. Dubious Document

    问题 K: Dubious Document 时间限制: 1 Sec  内存限制: 128 MB 提交: 34  解决: 28 [提交][状态][讨论版][命题人:admin] 题目描述 Snuke ...

  5. 平常水题 - Atcoder 058 - C - 怪文書 / Dubious Document(字符串的处理)

    C - 怪文書 / Dubious Document                                                       Time limit : 2sec / ...

  6. ENG Note 1 : 英语写作模板

    英语写作模板:引入==>论证(论点.论据)==>呼应 第一段的写法:引入(第一句)-引起关注(第二句) Just as an old proverb says,where there is ...

  7. GO 语言实现设计模式【全】

    文章目录 0.前言 1.责任链模式 概念 示例 登机过程 测试程序 运行结果 2.命令模式 概念 示例 电饭煲接收器 电饭煲命令 测试程序 运行结果 3.迭代器模式 概念 示例 班级成员 运行结果 4 ...

  8. wi-fi以连接但无法上网_Wi-Fi无法扩展以弥合数字鸿沟

    wi-fi以连接但无法上网 Access to the Internet is poor across the nation. There's a Digital Divide that has so ...

  9. java判断日文_判断字符串是否含有日文

    日文字符的Unicode编码范围是: U+3040–U+309F: Hiragana U+30A0–U+30FF: Katakana U+4E00–U+9FBF: Kanji 所以我们只需要对每一个字 ...

最新文章

  1. win7设置java环境变量_win7下JAVA环境变量配置方法
  2. 全站HTTPS简单实践
  3. 第一次spring,第三天。
  4. vxWorks下常用的几种延时方法
  5. 367. 有效的完全平方数(二分法)
  6. JavaFX官方教程(四)之Hello World,JavaFX样式
  7. linux的常用操作——vim和vi
  8. 外设驱动库开发笔记16:MS5536C压力变送器驱动
  9. Java后台入坑二:renrenfast后台打包和前端打包运行
  10. 知识蒸馏(Knowledge Distillation)
  11. 关于农历闰月年份的口诀
  12. wordpress优化title的seo技巧
  13. 【定制项目】【M13】【数据监控 + 数据分析 + 可视化大屏】- 关键技术 python flask + pandas + echarts + excel
  14. 怎么进入 BAT 的研发部门?
  15. 使用TeamView远程电脑无法操作的问题处理
  16. 淘宝非标品类目商品开车如何选词?[淘宝插旗、创建订单api]
  17. 英特尔的Linux Xe内核图形驱动程序
  18. (转)爱剪辑学习记录_快速剪辑视频
  19. java验证iap支付收据
  20. 数值最优化—无约束问题信赖域算法

热门文章

  1. 【计量经济学】简单回归模型
  2. 拯救动画卡顿之FLIP
  3. 防范客户流失的主要措施有哪些?
  4. 计划订单投放成生产任务单时修改生产任务单编号
  5. 《Unsupervised Learning of Depth and Ego-Motion from Video》读书笔记
  6. Teamcity的安装与使用
  7. deepin 安装显卡后,可支持双屏展示
  8. CANoe DLL编程(六)—— DLL文件的二次封装
  9. 那些闪光的思想和智慧-让自己慢下来(36)
  10. 线控转向,包含设计说明书,carsim模型,MATLAB Simulink模型全套