test20181024 hao
题意


分析
考场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的更多相关文章
- hao.360.cn不停跳....
最近单位里访问hao.360.cn经常会跳....无限循环,有时跳几十次后才会打开.... 但是,单位里走电信出口部分的电脑就没有问题...同样的电脑(移动出口)的用360浏览器.火狐也问题不大,关键 ...
- 浏览器被hao.360.cn劫持怎么办
特么的现在互联网太没节操了,一大早发现我的浏览器被hao.360.cn劫持了,弄了好久都没弄好,后来一想可能是因为qvod的原因,这可是哥当年看片的神器啊…… 废话不说: 1,进入:C:\Progra ...
- 浏览器被劫持到http://hao.169x.cn/?v=108的解决办法
不管什么浏览器打开都是 http://hao.169x.cn/?v=108 1.下载wmi tool,(微软官网下载,我的下载地址是: http://120.52.73.52/download.mi ...
- 怎么删除hao.qquu8.com绑定
运行 输入 regedit 编辑 - 查找 hao.qquu8.com 然后修改成 你想绑定的 主页 就好
- UVA12563-Jin Ge Jin Qu hao(动态规划基础)
Problem UVA12563-Jin Ge Jin Qu hao Accept: 642 Submit: 7638Time Limit: 3000 mSec Problem Descriptio ...
- ie被hao.360劫持的解决方法
概述 之前无意中发现ie被hao.360劫持了,只要打开网址就会跳到hao.360,然后显示网络错误.网上试了几种解决方法,都不行,最后被我用重置ie浏览器的方法解决了.我总结了一下,把各种方案都记下 ...
- Recommender Systems中Yehuda Koren 和 Ma Hao的paper
以前读了Yehuda Koren和Ma Hao的论文,感觉非常不错,这里分享一下.如果想着具体了解他们近期发的论文,可以去DBLP去看看. Yehuda Koren也是Netflix Prize的冠军 ...
- ie浏览器总跳转到 http://hao.360.cn
起因在于 开启360某些防护之后,若出现使用ie无法打开网页的情况,那么就会跳转到http://hao.360.cn .把360的防护能关的都关掉,就不会跳转了. 第二个问题:chrome可以打开网 ...
- Android热补丁技术—dexposed原理简析(阿里Hao)
本文由嵌入式企鹅圈原创团队成员.阿里资深工程师Hao分享. 上篇文章<Android无线开发的几种常用技术>我们介绍了几种android移动应用开发中的常用技术,其中的热补丁正在被越来越多 ...
随机推荐
- echarts 不同区域背景色不同 废了我一天的时间
var result = echarts.init(document.getElementById('result')); var option1 = { title: { text: '设备阶段故障 ...
- CentOS7 忘了root密码怎么办
今天打开很久没开机的另2台虚拟机,发现不记得root密码了. 于是参考了google搜索到的第一个答案,https://www.unixmen.com/reset-root-password-cent ...
- myeclipse安装jadclipse(反编译工具)
我是myeclipse5. 的IDE工具.为了能反编译class文件,上网搜索了很多资料,终于找到一下的一段资料: .将jad.exe 复制到myeclipse安装目录的jre/bin目录下, 如:C ...
- 远程连接软件TeamViewer
(1)先在windows下安装Teamviewer软件,地址:https://pan.baidu.com/s/1rWxRBtNbn3OMmg-8YaYWRQ (2)再在linux下安装Teamview ...
- 反射获取成员方法(Method)
1.1.1 反射公开的非静态的成员方法 Method getDeclaredMethod(String name,Class ... parameterTypes)获取某个方法. 说明: 1)在Cla ...
- MySQL "java.lang.IllegalArgumentException: HOUR_OF_DAY: 2 -> 3" 问题解析
抛出异常截图: 异常原因 系统时区原因. 解决办法 在数据库连接串加上 &serverTimezone=Asia/Shanghai 即可~ conn_str="jdbc:mysql: ...
- 20145211MSF基础应用实验
20145211MSF基础应用实验 一.实验博客 ms08_067攻击实验 http://www.cnblogs.com/entropy/p/6690301.html ms12_004漏洞攻击 htt ...
- 可替换参数在SharePoint和VS中的使用
什么是可替换参数呢?你可能会在代码里看到像$SharePoint.Project.AssemblyFullName$一样的标记.VS会在编译的时候用完整的签名来替换相应参数.例如,标记 $ShareP ...
- hashmap实现及哈希冲突
原文: https://www.cnblogs.com/peizhe123/p/5790252.html HashMap 采用一种所谓的“Hash 算法”来决定每个元素的存储位置.当程序执行 map. ...
- hdu 4739 Zhuge Liang's Mines DFS
http://acm.hdu.edu.cn/showproblem.php?pid=4739 题意: 给定100*100的矩阵中n(n<= 20)个点,每次只能一走能够形成正方形的四个点,正方形 ...