Kattis - virus【字符串】

题意

有一个正常的DNA序列,然后被病毒破坏。病毒可以植入一段DNA序列,这段插入DNA序列是可以删除正常DNA序列中的一个连续片段的。 简单来说就是,给你一段字符串,然后这段字符串中插入一段,删掉一段。然后可以不插入,只删除。也可以只插入,不删除。但是 插入的只有一段,删除的也只有一段。也就是说 ATAA T 这组数据 删掉两边是不对的。 而且 插入的那段和删除的那段 必须是连着的。 也就是说 ATAT TATAA 这组数据 我们应该视为 删除了ATAT 再插入 TATAA 而不应该视为 删除左边的A 在右边插入AA 。 然后题目 最后要求 插入的最小的那段字符串。

思路

先顺着扫一遍,找到第一个不相同字符的位置,再逆着扫一遍,找到 不相同字符的位置。

但是这样做有一个弊端。需要考虑很多特例。

比如

AA

AAAAA

AAAAA

AA

AG

TGGGGGGGGGGG

AG

TTTTTTTTTTTTTTTTTTG

AAABBBF

AABF

其实 顺着扫的时候 就把相同的字符给erase掉 然后再逆着扫的时候 遇到相同的字符 同样给erase 掉 这样就能避免掉很多的问题。

AC代码

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<string>
#include<sstream>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<stack>
#include<numeric>
using namespace std;
const int MAX = 0x3f3f3f3f;
const int MIN = 0xc0c0c0c0;
const int maxn = 1e5 + 5;
int main()
{
string a, b;
cin >> a >> b;
int len_a = a.size(), len_b = b.size();
while(a[0] == b[0] && a.size() && b.size())
{
a.erase(0, 1);
b.erase(0, 1);
}
while(a[a.size() - 1] == b[b.size() - 1] && a.size() && b.size())
{
a.erase(a.size() - 1, 1);
b.erase(b.size() - 1, 1);
}
cout << b.size() << endl;
}

Kattis - virus【字符串】的更多相关文章

  1. Kattis - whatdoesthefoxsay —— 字符串

    题目:  Kattis - whatdoesthefoxsay   Determined to discover the ancient mystery—the sound that the fox ...

  2. Kattis - names Palindrome Names 【字符串】

    题目链接 https://open.kattis.com/problems/names 题意 给出一个字符串 有两种操作 0.在字符串的最末尾加一个字符 1.更改字符串中的一个字符 求最少的操作步数使 ...

  3. Codeforces Gym100543G Virus synthesis 字符串 回文自动机 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF-100543G.html 题目传送门 - CF-Gym100543G 题意 你可以对一个字符串进行以下两种操 ...

  4. Kattis - prva 【字符串】

    题意 从上到下 或者 从左到右 组成的长度 >= 2 的字符串 如果遇到 # 就断掉 输出 字典序最小的那一个 思路 只要从上到下 和从左到右 分别遍历一遍,将 长度 >= 2 的字符串 ...

  5. [bzoj1966][Ahoi2005][VIRUS 病毒检测] (字符串dp)

    Description 科学家们在Samuel星球上的探险仍在继续.非常幸运的,在Samuel星球的南极附近,探险机器人发现了一个巨大的冰湖!机器人在这个冰湖中搜集到了许多RNA片段运回了实验基地.科 ...

  6. UVALive 5103 Computer Virus on Planet Pandora Description 一些新兴需求模式的字符串 AC自己主动机

    主题链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=3104">点击打开链接 题意: ...

  7. Kattis - yoda 【字符串】

    分析 给出两个串 从末尾开始对齐 每位对齐后,每一位 遍历 如果 第一串 的那位 < 第二串 的 那么 第一串的那位 就删去 如果 等于 两位 都保留 如果 大于 那么 保留 第二串的 那位 如 ...

  8. hdu ----3695 Computer Virus on Planet Pandora (ac自动机)

    Computer Virus on Planet Pandora Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 256000/1280 ...

  9. ZOJ 3430 Detect the Virus

    传送门: Detect the Virus                                                                                ...

随机推荐

  1. Unreal开发HTC Vive程序,开启VR编辑模式

    新建项目模板有个VirtualReality 调试的时候,Play按钮下拉有个VR Preview 打开VR模式,在我现在用的4.15.0版本,VR编辑模式还是预览功能,可以在“编辑器偏好设置”-“试 ...

  2. phpcms替换类列表页,内容页,主页

    phpcms替换类列表页,内容页,主页   利用phpcms制作企业站,首先要将静态的企业主页替换成后台可编辑的动态主页. 在phpcms/install_package/phpcms/templat ...

  3. Objective-C实用类和协议

    Objective-C实用类和协议 目录 概述 NSObject 概述 NSObject 协议<NSObject> 类NSObject 详细方法参考文档 实用操作 是否为某个类或其子类 是 ...

  4. CSS样式表、JS脚本加载顺序与SpringMVC在URL路径中传参数与SpringMVC 拦截器

    CSS样式表和JS脚本加载顺序 Css样式表文件要在<head>中先加载,这样网页显示时可以第一次就渲染出正确的布局和样式,网页就不会闪烁,或跳变 JS脚本尽可能放在<body> ...

  5. VC 常用资源

    vckbase:www.vckbase.com emule:http://sourceforge.net/projects/emule/files/eMule/ firefox developer:h ...

  6. DEV中gridview常用属性

    1.隐藏最上面的GroupPanel: gridView1.OptionsView.ShowGroupPanel=false; 2.得到当前选定记录某字段的值: sValue=Table.Rows[g ...

  7. Linux上安装Zabbix客户端

    rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.4-2.el7.x86_64.rpm cp /etc ...

  8. Django中间件如何处理请求

    Django中间件 在http请求 到达视图函数之前   和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法. Django1.9版本以后中间件的执行流程 1. ...

  9. first-child与:first-of-type的区别

    css选择器中:first-child与:first-of-type的区别 :first-child选择器是css2中定义的选择器,从字面意思上来看也很好理解,就是第一个子元素.比如有段代码: p:f ...

  10. 入参是小数的String,返回小数乘以100的String

    String money = request.getParameter("orderAmt"); BigDecimal moneyDecimal = new BigDecimal( ...