题意:

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

其中可以消去任意字母,以求得更大的分数

思路:

1、如果能够消去两个xxx那么一定能消去第三个,那么答案为3

2、如果只能找到一个xxx,那么答案一定是 2,因为必须舍弃一个消除才能得到一组xxx

3、没有找到xxx,那么有两种情况,一种是1,一种是2,枚举三个字母,暴力删除后进行判断xxx的存在,如果存在,那么答案是2,不存在答案是1

代码:

#include<iostream>
#include<string>
using namespace std;
string sss[4] = {"ggg", "ooo", "aaa"};
string s[4] = {"g","o","a"};
int deal(string str, int sum) {
int t = 4;
while(t--) {
for(int i = 0; i <= 2; i++) {
int index = str.find(sss[i]);
if(index != -1) {
str = str.substr(0,index)+str.substr(index+3,str.size());
sum ++;
}
}
}
return sum;
}
int del(string str) {
int ans = -1;
for(int i = 0; i <= 2; i++) {
string tmp = str;
int index = tmp.find(s[i]);
while(index != -1) {
tmp = tmp.substr(0,index)+tmp.substr(index+1,tmp.size());
index = tmp.find(s[i]);
}
ans = max(deal(tmp,0), ans);
}
if(ans == 0) return 1;
else return ans;
}
int main() {
string str;
int t;
cin >> t;
while(t--) {
cin >> str;
int sum = deal(str, 0);
if(sum == 3) cout << "3" << endl;
else if(sum == 1) cout << "2" << endl;
else cout << del(str) << endl;
}
return 0;
}

ZOJ - 3983 - Crusaders Quest(思维 + 暴力)的更多相关文章

  1. zoj 3983 Crusaders Quest 思维+枚举

    题目链接 这道题意思是: 给你一个长度为9的字符串,且只有3个a.3个g.3个o 问,你可以选择删除一段连续的串或者单个的字符也可以不删,最多会出现几个三子相连的子串 比如:agoagoago只有将两 ...

  2. ZOJ 3983 Crusaders Quest(思维题)

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

  3. ZOJ 3983 - Crusaders Quest - [DFS]

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

  4. ZOJ - 3985 - String of CCPC (思维 + 暴力)

    题意: 询问一共有有多少个CCPC,每个得1分,可以自己在任意位置添加字母,第i次添加需要耗费i-1分 思路: 既然每次添加需要耗分,添加第二个字母,相当于没有添加,所以只需要添加一次就好 先计算出原 ...

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

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

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

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

  7. ZOJ 3790 Consecutive Blocks (离散化 + 暴力)

    题目链接 虽然是一道暴力的题目,但是思路不好想.刚开始还超时,剪枝了以后1200ms,不知道为什么还是这么慢. 题意:给你n个点,每个点有一种颜色ci,给你至多k次删除操作,每次删除一个点,问最多k次 ...

  8. zoj 3778 Talented Chef(思维题)

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

  9. Nikita and string [思维-暴力] ACM

    codeforces Nikita and string time limit per test   2 seconds memory limit per test   256 megabytes O ...

随机推荐

  1. 解决myeclipse在mac中Retina屏幕中模糊的终极详细方法

  2. 【Codeforces】665E Beautiful Subarrays

    E. Beautiful Subarrays time limit per test: 3 seconds memory limit per test: 512 megabytes input: st ...

  3. luogu 3375 【模板】KMP字符串匹配

    我太菜了 今天才学会kmp #include<iostream> #include<cstdio> #include<algorithm> #include< ...

  4. Java多线程系列三——实现线程同步的方法

    两种实现线程同步的方法 方法 特性 synchronized 不需要显式地加解锁,易实现 ReentrantLock 需要显式地加解锁,灵活性更好,性能更优秀,结合Condition可实现多种条件锁 ...

  5. Book-MySQL-Operate

    创建数据库 CREATE DATABASE db_name 查看数据库 SHOW DATABASES 选择数据库 USE db_name 删除数据库 DROP DATABASE db_name 列主键 ...

  6. SpringCloud(Finchley版本)中Zull过滤器ResponseBoby返回中文乱码解决方案

    Spring Cloud带有"Cloud"的字样,但它并不是云计算解决方案,而是在Spring Boot基础上构建的,用于快速构建分布式系统的通用模式的工具集.使用Spring C ...

  7. hdu 模拟 贪心 4550

    卡片游戏 Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Su ...

  8. [C和指针] 6-指针

    6.1 内存和地址 我们可以把计算机的内存看作是一条长街上的一排房屋,每座房子都可以容纳数据,并通过一个房号来标识. 这个比喻颇为有用,但也存在局限性.计算机的内存由以亿万计的位(bit)组成,每个位 ...

  9. Ajax学习笔记之一----------第一个Ajax Demo[转载]

    原文地址: http://www.cnblogs.com/pjx412/archive/2011/05/04/2037014.html 一.核心推动力:XMLHttpRequest对象XMLHttpR ...

  10. php域名授权只需要一个函数

    <?php function allow_doamin(){ $is_allow=false; $url=trim($_SERVER['SERVER_NAME']); $arr_allow_do ...