题目链接

这道题意思是:

给你一个长度为9的字符串,且只有3个a、3个g、3个o

问,你可以选择删除一段连续的串或者单个的字符也可以不删,最多会出现几个三子相连的子串

比如:agoagoago只有将两种删除完,才能得到三子相连,所以是1

   aaoogggoa,首先里面有一个三子相连(ggg),然后我们删除ggg这三个连续的字符,之后会出现ooo,删除ooo,之后会出现aaa,所以答案是3

我们可以分析到:

先检测原串中有几个三子相连,且只会得到0个,1个或者3个,不会有2个

如果原串有一个三子相连,那么最后答案就是2,因为剩下的没有现成三子相连的6个字符删除某些字符只能剩下一个三子相连,且最后一定会剩下一个

如果原串有0个三子相连,那么删除任意个字符后一定会剩下至少一个三子相连,下文续:

想法一:如果里面有一个二子相连(假设为a类字符),并且和另外一个字符中间需要删除的部分中只由一种字符(假设为b类字符)构成,那么我们删除中间的b类字符让二子相连变成三子相连,剩下的另外一种字符一定会通过删完a类字符和b类字符,最后剩下来,又得到一个三子相连

想法二:但是我们不去记录素有二子相连中间与第三子中间的字符种类数,我们选择去枚举每一种字符,分别将它们移除现场,然后检查是否有三子相连,如果有,说明想法一成立,如果分别删除每一种字符都不能形成三子相连,那么说明要达到三子相连必须要删除中间的两种字符,一旦删除两种字符,就不可能有更多的三子相连

#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std; string str, str2;
char ch[] = { 'a','g','o' };
const char* _3[] = { "aaa","ggg","ooo" }; int main()
{
int t;
scanf("%d", &t);
while (t--)
{
int result3 = ;
cin >> str; auto fun = [&](string& str)
{
int re = ;
do
{
size_t it = ;
for (int i = ; i < ; ++i)
if ((it = str.find(_3[i])) != string::npos)result3++,
str.erase(str.begin() + it, str.begin() + it + ); } while (re-- && result3 != );
}; fun(str); if (result3 == )
puts("");
else if (result3 == )
puts("");
else
{
size_t index;
for (int i = ; i <= ; ++i)
{
string str2 = str;
while ((index = str2.find(ch[i])) != string::npos)
str2.erase(str2.begin() + index); fun(str2);
if (result3)break;
}
if (result3)puts("");
else puts("");
}
}
}

感谢阅读,生活愉快~

zoj 3983 Crusaders Quest 思维+枚举的更多相关文章

  1. ZOJ 3983 Crusaders Quest(思维题)

    C - Crusaders Quest Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu S ...

  2. ZOJ - 3983 - Crusaders Quest(思维 + 暴力)

    题意: 给出一个字符串,长度为9,包含三种各三个字母"a","g","o",如果一次消除连续三个一样的分数+1,消完自动向左补齐 其中可以消 ...

  3. ZOJ 3983 - Crusaders Quest - [DFS]

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3983 题意: 给出一个长度为 $9$ 的字符串 $s$,且 $s ...

  4. ZOJ 4124 拓扑排序+思维dfs

    ZOJ - 4124Median 题目大意:有n个元素,给出m对a>b的关系,问哪个元素可能是第(n+1)/2个元素,可能的元素位置相应输出1,反之输出0 省赛都过去两周了,现在才补这题,这题感 ...

  5. zoj 3778 Talented Chef(思维题)

    题目 题意:一个人可以在一分钟同时进行m道菜的一个步骤,共有n道菜,每道菜各有xi个步骤,求做完的最短时间. 思路:一道很水的思维题, 根本不需要去 考虑模拟过程 以及先做那道菜(比赛的时候就是这么考 ...

  6. zoj 1622 Switch 开关灯 简单枚举

    ZOJ Problem Set - 1622 Switch Time Limit: 2 Seconds      Memory Limit: 65536 KB There are N lights i ...

  7. 2017CCPC秦皇岛 C题Crusaders Quest&&ZOJ3983【模拟+STL】

    链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3983 题意: 给定9个血槽,有三种物品,每次可以把连续相同的物品抵消 ...

  8. ZOJ 3987 Numbers(Java枚举)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3987 题意:给出一个数n,现在要将它分为m个数,这m个数相加起来必须等于n ...

  9. CF876 F 思维 枚举

    给你n个数,问有几个区间满足,区间内或操作大于区间内的任意数. 首先可以知道,两数或操作的结果必定不会小于两者间的最大值,也就是说对于一个区间中,不合法的状态只有两值或相等.那么我们可以考虑枚举每个数 ...

随机推荐

  1. 实现asp.net的文件压缩、解压、下载

    很早前就想做文件的解压.压缩.下载 了,不过一直没时间,现在项目做完了,今天弄了下.不过解压,压缩的方法还是看的网上的,嘻嘻~~不过我把它们综合了一下哦.呵呵~~ 1.先要从网上下载一个icsharp ...

  2. jetty 热部署

    1,在pom.xml文件中配置jetty插件的参数:scanIntervalSeconds <plugin> <groupId>org.mortbay.jetty</gr ...

  3. Vim,Emacs排名不分先后

    关键词:Vim,Emacs,Vim和Emacs之争 一同时提到vim和emacs,就几乎一定引发关于哪个更好的圣战.据说这个圣战从很早就开始了,偶尔还会有windows下的ultraedit的用户来凑 ...

  4. 苹果手机浏览器$(document).on(“click”,function(){})点击无效的问题

    <label class="js_highlight" style="display: inline-block;float: left;width: 50%;&q ...

  5. js中同步与异步处理方法

    在使用异步请求时,有时需要将异步请求的结果返回给另一个js函数,此种情况下会出现未等异步请求返回请求结果,该发送请求所在js函数已经执行完后续操作,即已经执行return ,这样会导致return的结 ...

  6. 查看linux系统的信息

    #!/bin/sh ################################################## #function:get host's information #Autho ...

  7. 【codeforces】【比赛题解】#960 CF Round #474 (Div. 1 + Div. 2, combined)

    终于打了一场CF,不知道为什么我会去打00:05的CF比赛…… 不管怎么样,这次打的很好!拿到了Div. 2选手中的第一名,成功上紫! 以后还要再接再厉! [A]Check the string 题意 ...

  8. container_of分析【转】

    转自:http://blog.csdn.net/tigerjibo/article/details/8299589 1.container_of宏 1> Container_of在Linux内核 ...

  9. C# 应用程序配置文件App.Config和web.config

    应用程序配置文件,对于asp.net是 web.config,对于WINFORM程序是 App.Config(ExeName.exe.config). 配置文件,对于程序本身来说,就是基础和依据,其本 ...

  10. 如何同步删除svn管理的package包目录

    转:https://blog.csdn.net/shiwodecuo/article/details/51754598 eclipse在实际的开发中,当我们的项目由svn进行管理时,若想删除选中的整个 ...