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. 【NLP+Deep learning】好文

    http://blog.jobbole.com/77709/ 原文出处: http://colah.github.io/posts/2014-07-NLP-RNNs-Representations/

  2. SurvivalShooter学习笔记(九.游戏暂停、结束)

    这里先补充一个得分管理器: 玩家得分设置成一个静态变量: public class ScoreManager : MonoBehaviour { public static int score; // ...

  3. UE4中VR模式下窗口单目双目的问题

    如果要是单目的话使用HMD MIRROR MODE 3或者4  

  4. PHP后台代码解决跨域问题

      在前端里面,解决跨域的时候总显得那么的恶心,什么jsonp啊,ajax啊,CORS啊什么的,总觉得是在钻空子进行跨域,其实在PHP文件里面只需要加一段代码就可以跨域了,前端你该怎么写还是怎么写,p ...

  5. 【BZOJ2801】[Poi2012]Minimalist Security BFS

    [BZOJ2801][Poi2012]Minimalist Security Description 给出一个N个顶点.M条边的无向图,边(u,v)有权值w(u,v),顶点i也有权值p(i),并且对于 ...

  6. Android存储Json到本地,和读取本地Json

    /** * 保存json到本地 * @param mActivity * @param filename * @param content */ public static File dir = ne ...

  7. Spring---Bean的继承与依赖

    Spring 允许继承 bean 的配置(通过Bean的parent属性来指定,例如parent=”teacher“), 被继承的 bean 称为父 bean.   继承这个父 Bean 的 Bean ...

  8. 几种压缩方式:zlib

    zlib:zlib.h http://www.zlib.net/manual.html 编译时加 -lz ZEXTERN int ZEXPORT compress OF((Bytef *dest, u ...

  9. Android中可自由移动悬浮窗口的实现

    http://www.xsmile.net/?p=538   调用WindowManager,并设置WindowManager.LayoutParams的相关属性,通过WindowManager的ad ...

  10. 拼团商品列表页 分析 js代码行位置对执行的影响和window.onload的原理 setTimeout传参

    w TypeError : Cannot set property 'innerHTML' of nullTypeError : Cannot set property 'value' of null ...