题意



分析

考场10分

直接\(O(nm)\)模拟即可。

#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<string>
#include<vector>
#include<list>
#include<deque>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<bitset>
#include<algorithm>
#include<complex>
#include<cassert>
#define rg register
#define il inline
#define co const
#pragma GCC optimize ("O0")
using namespace std;
template<class T> il T read()
{
T data=0;
int w=1;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
w=-1;
ch=getchar();
}
while(isdigit(ch))
data=10*data+ch-'0',ch=getchar();
return data*w;
}
template<class T> il T read(T&x)
{
return x=read<T>();
}
typedef long long ll;
const int INF=0x7fffffff; const int MAXN=3e3+7;
int len;
char s[MAXN]; bool check(int k,int&l,int&r)
{
l=r=k;
while(l-1>=0&&s[l-1]==s[l])
--l;
while(r+1<len&&s[r+1]==s[r])
++r;
return r-l+1>=3;
} void del(int l,int r)
{
len-=r-l+1;
for(int i=l;i<len;++i)
{
s[i]=s[i+r-l+1];
}
s[len]=0;
} int main()
{
freopen("hao.in","r",stdin);
freopen("hao.out","w",stdout);
scanf("%s",s);
len=strlen(s);
int n=read<int>();
int k;
char z[2];
while(n--)
{
read(k);
scanf("%s",z);
for(int i=len;i>k;--i)
s[i]=s[i-1];
s[k]=z[0];
s[++len]=0;
int l,r;
while(check(k,l,r))
{
del(l,r);
k=l-1;
}
if(len>0)
puts(s);
else
puts("-");
}
// fclose(stdin);
// fclose(stdout);
return 0;
}

标解

为何只有10分呢?

是因为这题有潜规则。

输入中会出现大于等于3个相同的子串,并且如果AAABBCCC中间插一个B进去,原串变为AAA。

还有就是原始串会有空串。(我不知道祖玛游戏没有珠子还要怎么玩。)

输入数据规模只有\(10^3\),可以说随便怎么暴力都是能过的。直接用vector::insert/erase,循环删除直到不能删这种程度的暴力都没有问题。

这道题来自于THU数据结构课程的作业,原题数据规模是\(10^4\),需要使用list和由插入点向两边删除的策略以尽量减少操作数才能通过。

于是我改了两个地方就AC了。

#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<string>
#include<vector>
#include<list>
#include<deque>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<bitset>
#include<algorithm>
#include<complex>
#include<cassert>
#define rg register
#define il inline
#define co const
#pragma GCC optimize ("O0")
using namespace std;
template<class T> il T read()
{
T data=0;
int w=1;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
w=-1;
ch=getchar();
}
while(isdigit(ch))
data=10*data+ch-'0',ch=getchar();
return data*w;
}
template<class T> il T read(T&x)
{
return x=read<T>();
}
typedef long long ll;
const int INF=0x7fffffff; const int MAXN=3e3+7;
int len;
char s[MAXN]; bool check(int k,int&l,int&r)
{
l=r=k;
while(l-1>=0&&s[l-1]==s[l])
--l;
while(r+1<len&&s[r+1]==s[r])
++r;
return r-l+1>=3;
} void del(int l,int r)
{
len-=r-l+1;
for(int i=l;i<len;++i)
{
s[i]=s[i+r-l+1];
}
s[len]=0;
} int main()
{
freopen("hao.in","r",stdin);
freopen("hao.out","w",stdout);
fgets(s,MAXN,stdin); // edit 1
len=strlen(s);
s[--len]=0;
int n=read<int>();
int k;
char z[2];
while(n--)
{
read(k);
scanf("%s",z);
for(int i=len;i>k;--i)
s[i]=s[i-1];
s[k]=z[0];
s[++len]=0;
int l,r;
while(check(k,l,r))
{
del(l,r);
k=l; // edit 2
}
if(len>0)
puts(s);
else
puts("-");
}
// fclose(stdin);
// fclose(stdout);
return 0;
}

test20181024 hao的更多相关文章

  1. hao.360.cn不停跳....

    最近单位里访问hao.360.cn经常会跳....无限循环,有时跳几十次后才会打开.... 但是,单位里走电信出口部分的电脑就没有问题...同样的电脑(移动出口)的用360浏览器.火狐也问题不大,关键 ...

  2. 浏览器被hao.360.cn劫持怎么办

    特么的现在互联网太没节操了,一大早发现我的浏览器被hao.360.cn劫持了,弄了好久都没弄好,后来一想可能是因为qvod的原因,这可是哥当年看片的神器啊…… 废话不说: 1,进入:C:\Progra ...

  3. 浏览器被劫持到http://hao.169x.cn/?v=108的解决办法

    不管什么浏览器打开都是 http://hao.169x.cn/?v=108 ​1.下载wmi tool,(微软官网下载,我的下载地址是: http://120.52.73.52/download.mi ...

  4. 怎么删除hao.qquu8.com绑定

    运行 输入 regedit 编辑 - 查找  hao.qquu8.com 然后修改成 你想绑定的 主页 就好

  5. UVA12563-Jin Ge Jin Qu hao(动态规划基础)

    Problem UVA12563-Jin Ge Jin Qu hao Accept: 642  Submit: 7638Time Limit: 3000 mSec Problem Descriptio ...

  6. ie被hao.360劫持的解决方法

    概述 之前无意中发现ie被hao.360劫持了,只要打开网址就会跳到hao.360,然后显示网络错误.网上试了几种解决方法,都不行,最后被我用重置ie浏览器的方法解决了.我总结了一下,把各种方案都记下 ...

  7. Recommender Systems中Yehuda Koren 和 Ma Hao的paper

    以前读了Yehuda Koren和Ma Hao的论文,感觉非常不错,这里分享一下.如果想着具体了解他们近期发的论文,可以去DBLP去看看. Yehuda Koren也是Netflix Prize的冠军 ...

  8. ie浏览器总跳转到 http://hao.360.cn

    起因在于  开启360某些防护之后,若出现使用ie无法打开网页的情况,那么就会跳转到http://hao.360.cn .把360的防护能关的都关掉,就不会跳转了. 第二个问题:chrome可以打开网 ...

  9. Android热补丁技术—dexposed原理简析(阿里Hao)

    本文由嵌入式企鹅圈原创团队成员.阿里资深工程师Hao分享. 上篇文章<Android无线开发的几种常用技术>我们介绍了几种android移动应用开发中的常用技术,其中的热补丁正在被越来越多 ...

随机推荐

  1. CCPC-Wannafly Winter Camp Day7 (Div2, onsite)

    Replay Dup4: 啥都不会? 只能看着两位聚聚A题? X: 模拟题不会写, 日常摔锅 u, v分不清, 日常演员 又是自己没理清楚就抢键盘上机导致送了一万个罚时, 日常背锅 A:迷宫 Solv ...

  2. ng-深度学习-课程笔记-12: 深度卷积网络的实例探究(Week2)

    1 实例探究( Cast Study ) 这一周,ng对几个关于计算机视觉的经典网络进行实例分析,LeNet-5,AlexNet,VGG,ResNet,Inception. 2 经典网络( Class ...

  3. 前端面试题之 sum(2)(3) (链式调用,toString,柯里化,数组操作)

    写一个函数让下面两个输出结果相同:console.log(sum(2)(3));console.log(sum(2,3)); var sum = (function() { var list = [] ...

  4. 20145302张薇 《网络对抗技术》逆向及BOF基础实践

    20145302张薇 <网络对抗技术>逆向及BOF基础实践 实验内容 实践对象:名为20145302的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单 ...

  5. linux及安全第四周总结——20135227黄晓妍

    总结部分: 用户态和内核态: 前提知识:cpu有几种不同指令执行的级别 用户态:代码的掌控范围受限制 内核态:高级别,代码课执行特权指令,访问任意物理地址. 权限设置的意义:没有的话,系统容易啊崩溃, ...

  6. InstallShieldPro 2015中Basic MSI工程类型如何调用InstallScript脚本

    转载:http://blog.csdn.net/mengzhishen/article/details/8953901 这是一个Basic MSI基础知识. A. 首先在Installation De ...

  7. HBase优化相关

    1.HBase预分区 HBase在创建表时,默认会自动创建一个Region分区.在导入数据时,所有客户端都向这个Region写数据,直到这个Region足够大才进行切分.这样在大量数据并行写入时,容易 ...

  8. splay入门教程

    笔者一个数据结构的蒟蒻还是奇迹般的搞明白了splay的基本原理以及实现方法,所以写下这篇随笔希望能帮到像我当初一脸懵逼的人. 我们从二叉查找树开始说起: 二叉查找树是一棵二叉树,它满足这样一个性质:所 ...

  9. CSU 1968 Permutation Descent Counts

    http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1968 题意:对于任一种N的排列A,定义它的E值为序列中满足A[i]>A[i+1]的数的个 ...

  10. JavaScript--语法3--数组

    JavaScript--语法3--数组 一.心得 二.代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "h ...