题目链接: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)对于其他情况,我们纪录每一个c出现的位置,然后从后往前遍历,如果c[i]-c[i-1]>2的话,那么就说明这两个c之间含有大于等于2个的f,计数器加1,否则标记不可能.

    对于第一个c之前和最后一个c之后的部分,如果相加有大于等于2个f的话,(同样这一步也可以判断如果只有一个c的话并且c[0]+len-c[k-1]>2也就是字符串s长度大于2)计数器再加1,否则标记不可能。

实现代码如下:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include<vector>
#include<queue>
#include<algorithm>using namespace std;
typedef long long LL;const int maxn=1000005;
const int INF=0x3f3f3f3f;char str[maxn];
int cnt[maxn];int main()
{int T, cas=1;scanf("%d", &T);while(T--){scanf("%s", str);int len=strlen(str);int k=0;int flag=1;for(int i=0; i<len; i++){if(str[i]=='c')cnt[k++]=i;if(str[i]!='c'&&str[i]!='f')flag=0;}printf("Case #%d: ", cas++);if(!flag || k*3>len){puts("-1");continue;}if(!k){printf("%d\n", (len+1)/2);continue;}int ans=0;for(int i=k-1; i>0; i--){if(cnt[i]-cnt[i-1]>2)ans++;else{flag=0;break;}}///对于第一个c之前和最后一个c之后的部分,///如果相加有大于等于2个f的话,(同样这一步也可以判断如果只有一个c的话并且c[0]+len-c[k-1]>2也就是字符串s长度大于2)计数器再加1,if(cnt[0]+len-cnt[k-1]>2)ans++;else flag=0;///否则标记不可能if(flag)printf("%d\n", ans);elseputs("-1");}return 0;
}

转载于:https://www.cnblogs.com/w-y-1/p/5772138.html

hdu---5455---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. 【 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 ...

  4. 2015 ACM/ICPC Asia Regional Shenyang Online题解

    以下所有AC题解程序来自"仙客传奇"团队. AC题数:7/13 ABCFGJL A. Traversal AC的C++语言程序: #include <bits/stdc++. ...

  5. 递推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 ...

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

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

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

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

  8. 王伟storm_王伟 - 南京大学 - 化学化工学院

    个人简介 2004年和2009年分别从中国科学技术大学化学系获得理学学士和分析化学博士学位.2009-2013在美国亚利桑那州立大学从事博士后研究.2013年12月起任南京大学教授.2017年获得中国 ...

  9. PHP下拉框选择的实现方法

    实现 第一种PHP下拉框实现方法: < ?php //提交下拉框; //直接饱触发onchange事件的结果 $id=$_GET['myselect']; // myselect 为locati ...

  10. 基于java的学生信息管理系统(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 内容摘要    - 2 - 引言    - 4 - 学生信息管理系统开发的意义和目的    - ...

最新文章

  1. 正确设置php-fpm和nginx防止网站被黑
  2. response.getWriter().write 传递中文乱码
  3. 影响网站各个页面权重高低的因素有哪些?
  4. Backbonejs之view的基本用法
  5. supervisor 重启_Golang HTTP服务平滑重启及升级
  6. c++——reverse()函数的使用
  7. 【第二届】Erlang Fans交流会(补充事宜)
  8. orcale可视化建立用户_建立动态可视化的新方法
  9. 数据库 事务隔离级别之可重复读
  10. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - MMX技术(2) - 数据转换指令
  11. hive 中文字符过滤_0650-6.2.0-通过UDF实现HiveImpala的中文拼音排序
  12. 路径规划之DWA类算法简述
  13. 关于我学前端一年的体验(心得)
  14. BSOJ 2927 -- 【模拟试题】保镖排队
  15. 华乾服显示无法连接服务器,唯满侠战火纷飞,飞龙休闲养老,剑网三各服务器缘何天差地别...
  16. 7-22 LC老玩游戏 (30 分)
  17. 解决element-ui数字输入框的问题
  18. (附源码)计算机毕业设计Java二次元文化网站
  19. 短波信道模型--多径瑞利信道原理详解及matlab实现
  20. KaTeX数学公式基础

热门文章

  1. 【模拟退火】解决【TSP】问题
  2. 第九周项目实践2 二叉树遍历的递归算法
  3. [YTU]_2627 (职工工资统计)
  4. matchShapes函数
  5. markdown希腊字母
  6. ValueError: Must have equal len keys and value when setting with an iterable
  7. 台式计算机风扇一直响,风扇一直响的原因是什么? 处理方法
  8. linux启动tomcat很久或者很慢Tomcat启动时卡在“INFO: Deploying web application directory ......”的解决方法...
  9. Angular2父子组件数据传递之@ViewChild获取子组件详解
  10. 《构建之法》读后感5