题意:

     给你一个初始串"MI",这个串有三种操作,

(1)M后卖弄可以直接复制 ,MI -> MII

(2)三个III可以变成一个U,MUIII -> MUU

(3)连续的两个U可以直接删除,MIUUU -> MIU

每次输入一个字符串,问你这个字符串是不是MI变过来的.

 

思路:

     刚开始想都没想直接开个容器mark,然后搜索打表,控制的长度是1000000,直接敲完运行等了好几分钟都没打完,哎! sb了,后来仔细看了看题目发现 其实我们可以这样想,所有的U都是i经过一线变化过来的,因为刚开始的时候没有U,而i能变成u而u不能变成i,还有的就是这个串一定是开头是M,因为没有操作能让中间产生m,或者把M变没,这样就简单了,那么就相当于一开始有一个i,我们可以把i的个数*2(操作1)
或者把i的个数-6 (操作3),这样所有的可能i的个数都打出来,没多少1--300000个,对于输入的串我们先看下是不是只有开头有一个M,然后在统计下他有多少个i,一个u是三个i(还原操作2),然后根据当前的i的数量是否被mark输出Yes或者No,水题一枚.


#include<stdio.h>
#include<string.h> #define N 1000100

char
str[N];
int
mark[N*3]; void DFS(int s)
{

mark[s] = 1;
if(
s * 2 <= N * 3 && !mark[s * 2])
DFS(s * 2);
if(
s - 6 >= 1 && !mark[s - 6])
DFS(s - 6);
} int main ()
{

memset(mark ,0 ,sizeof(mark));
DFS(1);
int
L ,ms ,t ,sum;
scanf("%d" ,&t);
while(
t--)
{

scanf("%s" ,str);
L = strlen(str);
ms = sum = 0;
for(int
i = 0 ;i < L ;i ++)
{
if(
str[i] == 'M') ms ++;
if(
i)
{
if(
str[i] == 'I')
sum ++;
else
sum += 3;
}
}
if(
ms != 1 || str[0] != 'M' || !mark[sum])
puts("No");
else
puts("Yes");
}
return
0;
}

hdu4662 简单搜索打表的更多相关文章

  1. ElasticSearch 5学习(4)——简单搜索笔记

    空搜索: GET /_search hits: total 总数 hits 前10条数据 hits 数组中的每个结果都包含_index._type和文档的_id字段,被加入到_source字段中这意味 ...

  2. solr简单搜索案例

    solr简单搜索案例 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字搜索商品信息,根据商品分类.价格过滤搜索结果,也可以根据价格进行排序,实现分页. 架构分为: 1. solr服务器 2. ...

  3. 和我一起打造个简单搜索之Logstash实时同步建立索引

    用过 Solr 的朋友都知道,Solr 可以直接在配置文件中配置数据库连接从而完成索引的同步创建,但是 ElasticSearch 本身并不具备这样的功能,那如何建立索引呢?方法其实很多,可以使用 J ...

  4. 和我一起打造个简单搜索之ElasticSearch入门

    本文简单介绍了使用 Rest 接口,对 es 进行操作,更深入的学习,可以参考文末部分. 环境 本文以及后续 es 系列文章都基于 5.5.3 这个版本的 elasticsearch ,这个版本比较稳 ...

  5. java 模拟简单搜索

    Java 模拟简单搜索 实体类 package org.dennisit.entity; /** * * * @version : 1.0 * * @author : 苏若年 <a href=& ...

  6. python简单实现用户表单登录

    实现简单的用户表单验证登录 user="desperado" pwd=" s=0 for i in range(10): if s < 3: username = ...

  7. nyoj 284 坦克大战 简单搜索

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=284 题意:在一个给定图中,铁墙,河流不可走,砖墙走的话,多花费时间1,问从起点到终点至少 ...

  8. c语言描述简单的线性表,获取元素,删除元素,

    //定义线性表 #define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType data[MAXSIZE]; //这是数组的长度, ...

  9. 简单的多表插入(oracle)

    简单的多表插入语句: insert all into 表1(字段1,2...) values(值1,值2......) into 表2(字段1,2...)) values(值1,值2......) s ...

随机推荐

  1. 剑指 Offer 13. 机器人的运动范围 + 深搜 + 递归

    剑指 Offer 13. 机器人的运动范围 题目链接 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2020/12/ ...

  2. mysql 基本指令 1

    desc 表名  --查看表属性 show create table 表名 \g;  --查看代码 alter table 表名 auto_increment=20;  --改自增的值 MySQL:自 ...

  3. CSV 注入实战

    oxo1 前言 之前看到过 CSV 注入的文章,具体想了解的请搜索学习,这里不多作介绍.今天刚好碰到了导出功能,就随手测试一波,没想到还真的存在 CSV 注入漏洞. oxo2 经过 1.测试漏洞 看到 ...

  4. SpringDataJPA 入门

    前言 1. 三者的区别与联系 JPA:本身是一种ORM规范,不是ORM框架.由各大ORM框架提供实现. Hibernate是一个完整的ORM框架,常规CRUD我们不需要写一句SQL;框架比较重,学习成 ...

  5. 微服务架构Day16-SpringBoot之监控管理

    监控管理使用步骤 通过引入spring-boot-starter-actuator,可以使用SpringBoot提供应用监控和管理的功能.可以通过HTTP,JMX,SSH协议来进行操作,自动得到审计, ...

  6. P2188 小Z的 k 紧凑数 题解(数位DP)

    题目链接 小Z的 k 紧凑数 解题思路 数位DP,把每一个数位的每一个数对应的可能性表示出来,然后求\(num(1,r)-num(1,l-1)\),其中\(num(i,j)\)表示\([i,j]\)区 ...

  7. 2019 GDUT Rating Contest III : Problem A. Out of Sorts

    题面: 传送门 A. Out of Sorts Input file: standard input Output file: standard output Time limit: 1 second M ...

  8. 十分钟学会Scratch图形化编程

    一.概要 Scratch是麻省理工学院开发的供儿童或者初学者学习编程的开发平台.其通过点击并拖拽的方式,完成编程,可以使儿童或者成人编程初学者学习编程基础概念等.Scratch是一款积木式图形编程软件 ...

  9. 攻防世界 reverse 流浪者

    流浪者 int __thiscall sub_401890(CWnd *this) { struct CString *v1; // ST08_4 CWnd *v2; // eax int v3; / ...

  10. ABP 适用性改造 - 精简 ABP CLI 生成的项目结构

    Overview 不管是公司或者个人都会有不同的开发习惯,通过建立项目模板,既可以使开发人员聚焦于业务功能的开发,也可以在一定程度上统一不同开发人员之间的开发风格.在使用 ABP 框架的过程中,对于 ...