题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5455

题目大意:定义递推式F为f(0)='f',f(1)='ff',f(2)='cff',f(n)=f(n-1)+'f',给出一个首位相连的字符串s,问组成s至少需要多少个F,如果F不能组成s,输出-1.

分析:很明显我们有:

(1)如果字符串含有除c和f外的其他字符的话,那么输出-1,如果3倍c的数量大于字符串s的长度,也输出-1.

(2)如果字符串只含有f,那么结果为(len+1)/2,len为字符串s的长度.

(3)如果s中只含有一个c,且len大于等于3,那么结果为1.

(4)对于其他情况,我们纪录每一个c出现的位置,然后从后往前遍历,如果c[i]-c[i-1]>2的话,那么就说明这两个c之间含有大于等于2个的f,计数器加1,否则标记不可能.对于第一个c之前和最后一个c之后的部分,如果相加有大于等于2个f的话,计数器再加1,否则标记不可能。

实现代码如下:

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
const int maxn=1e6+10;
char str[maxn];
int c[maxn];
int main()
{int t,T=1;scanf("%d",&t);while(t--){scanf("%s",str);int len=strlen(str);int cnt=0;bool flag=true;for(int i=0;i<len;i++){if(str[i]=='c') c[cnt++]=i;if(str[i]!='c'&&str[i]!='f') flag=false;}printf("Case #%d: ",T++);if(!flag||cnt*3>len){puts("-1");continue;}if(!cnt){printf("%d\n",(len+1)/2);continue;}if(cnt==1&&len>=3){puts("1");continue;}int ans=0;for(int i=cnt-1;i>0;i--){if(c[i]-c[i-1]>2) ans++;else{flag=false;break;}}if(c[0]+len-c[cnt-1]>2) ans++;else flag=false;if(flag) printf("%d\n",ans);else puts("-1");}return 0;
}

HDU5455 Fang Fang 模拟相关推荐

  1. 【HDU - 5455】Fang Fang(水题,有坑)

    题干: Fang Fang says she wants to be remembered.  I promise her. We define the sequence FF of strings. ...

  2. HDU-5455 Fang Fang (思维)

    题目链接 题目:输入一个字符串,问最少能由几个Fi组成,若不能恰好由Fi组成,输出-1: 这题有一个坑点就是如果输入的字符串中有除c和f以外的其他字符时直接输出-1(刚开始做的时候没有想到这一点,被坑 ...

  3. 电脑编程教学_东莞沙田mastercam编程学习怎么收费

    东莞沙田mastercam编程学习怎么收费 深圳卓越培训中心UG综合班主要课程:1,软件介绍,界面熟悉 ,快捷键,图层使用.2,草图使用,三维曲线绘制修改,草图线3D线互相转换.3,建模,绘制3D图形 ...

  4. 【2021最新综述】Deep Neural Approaches to Relation Triplets Extraction:A Comprehensive Survey

    [2021最新综述]Deep Neural Approaches to Relation Triplets Extraction:A Comprehensive Survey 1 Introducti ...

  5. python、Linux、MySQL学习笔记

    git操作: 1.git init [project-name] 2.git clone url  克隆文件 3.git status 查看目前状态 4.git add .  添加 5.git com ...

  6. python使用蒙特卡洛方法计算圆周率的流程图怎么画_在python中用蒙特卡洛算法计算圆周率...

    本文写给那些python初学者与对蒙特卡洛算法感兴趣,但却不知该如何理解或应用的人. (虽然我发现这个貌似有许多人做过了,但是程序都相对复杂,不便于理解,于是我就自己编写了一段程序,海龟的可视化请看下 ...

  7. 递推DP HDOJ 5459 Jesus Is Here

    题目传送门 题意:简单来说就是sn = sn-1 + sn-2递推而来,求其中所有c字符的:∑i<j:sn[i..i+2]=sn[j..j+2]=''cff"(j−i) mod 530 ...

  8. 开启注册 | AAAI 2022论文北京预讲会,21场报告+24个Poster等你来

    注册官网:https://event.baai.ac.cn/activities/228 国际人工智能会议AAAI 2022论文北京预讲会由中国中文信息学会青年工作委员会主办.智源社区和北京航空航天大 ...

  9. 蓝桥杯——机器人行走

    某少年宫引进了一批机器人小车.可以接受预先输入的指令,按指令行动.小车的基本动作很简单,只有3种:左转(记为L),右转(记为R),向前走若干厘米(直接记数字). 例如,我们可以对小车输入如下的指令:1 ...

  10. 【 HDU - 5459】Jesus Is Here(dp)

    题干: I've sent Fang Fang around 201314 text messages in almost 5 years. Why can't she make sense of w ...

最新文章

  1. 创建一个栈存储结构,并且写入一些对栈的基本的操作
  2. 这些 Python 不为人知的「坑」,躲都躲不开
  3. linux 发行版本和 及其与linux内核之间的关系
  4. C# Levenshtein计算字符串的相似度
  5. 无限轮播的N+2 策略
  6. php 函数中静态变量的问题
  7. springboot多数据源使用EntityManager
  8. Java 源程序与编译型运行区别
  9. 在五分钟内学习使用Python进行类型转换
  10. Java实现:月,日,年,周,访问量统计
  11. 【DATAGUARD】物理dg在主库丢失归档文件的情况下的恢复(七)
  12. 安卓黑域使用激活和使用
  13. 使用 PyQT5 来做一个简易版库存管理系统(二)
  14. 系统架构设计-企业信息化战略与实施 知识点
  15. ITSM系统实施成功的前提
  16. 九宫格构图学习[1]
  17. 在unik中,写一个Go HTTP服务器
  18. 跳转到三方App ,三方App 是如何返回自己的App的
  19. seo网站推广方法简介
  20. JSP页面之间传值的方法总结

热门文章

  1. java 图片 白边,如何在Java中自动裁剪图像白色边框?
  2. ruby on rails_通过Ruby on Rails中的关系调试Has_Many
  3. 日常英语---九、冒险岛link技能导读
  4. Opencv-获取两点之间距离
  5. 按键精灵定时后台点击
  6. 大学生计算机基础实验文库,大学计算机基础实验指导书(ecxel)
  7. 如何安装perl模块
  8. httpd三种MPM的原理剖析
  9. 提醒专注:既往不恋,未来不迎,当下不杂
  10. 子元素和后代元素的区别