题目链接

这道题意思是:

给你一个长度为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. 读懂复杂C声明的黄金法则

    在网上遇见felix,他让我读 http://www.felix021.com/blog/read.php?2072,读完之后觉得收获很大,需要练习一下. 黄金法则:从声明的变量开始,先向右看,再向左 ...

  2. Django认证系统实现的web页面

    结合数据库.ajax.js.Djangoform表单和认证系统的web页面 一:数据模块 扩展了Django中的user表,增加了自定义的字段 from django.db import models ...

  3. 如何更方便的查看Linux内核代码的更新记录【转】

    转自:http://blog.csdn.net/lee244868149/article/details/44302819 Linux内核的更新非常的快,如何快速的了解这些更新呢?最一般的办法就是把新 ...

  4. httpd功能配置之虚拟主机【转】

    apache默认使用80端口提供服务,使用主服务器配置的话,一台物理机只能提供一个站点服务:可以使用虚拟主机方式提供不同的访问,以实现一台主机提供多站点服务. 虚拟主机的实现方式有三种:基于端口.基于 ...

  5. 安装virtualenv(Scrapy)

    Windows 10家庭中文版,Python 3.6.4, virtualenv用来提供一个应用程序独立的 运行环境,这个独立是相对于系统的Python运行环境而言,开发者可以在virtualenv建 ...

  6. Flask:初次使用Blueprints

    Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2,Eclipse Oxygen.1a Release (4.7.1a),PyDev 6.3.2 本文为记录自己第一次使用 ...

  7. MongoDB-MongoDB重装系统后恢复

    重装系统后,把原mongoDB安装目录和原mongoDB的data目录拷贝到新硬盘的D盘上. 恢复的方法如下. 1.D:\Mongodb里放着mongod.cfg和data C:\Users\Admi ...

  8. 本地删除文件,git远程不同步删除

    git add -a 或 git add * 它能stages所有文件,包括之前删除的痕迹 git add . 只能stages新文件和被修改的文件,不会stages已被删除的文件 步骤如下: 1) ...

  9. Python学习笔记:出生日期转化为年龄

    在数据挖掘项目中,有时候个体的出生日期包含信息量过大,不适合作为一个有效数据进入模型算法训练,因此有必要把出生日期转化为年龄age,age是一个很好的特征工程指示变量. import pandas a ...

  10. Oracle学习笔记:parallel并行处理

    在使用oracel查询时,可以通过并行提高查询速度.例如: ) from table_name a; 强行启用并行度来执行当前SQL.加上这个说明之后,可以强行启用Oracle的多线程处理功能,提高效 ...