题目

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

题目来源:2015沈阳网络赛第二题

简要题意:可以使用f,ff以及c后面跟大于1个f的串,问构成一个串起码要几个这样的串(可以环形移位)

数据范围:∑|S|⩽106\sum |S|\leqslant10^6

题解

首先有非c,f的肯定是不行的。

没有c的话很容易推出结果为⌈|S|/2⌉\lceil |S|/2\rceil。

有c的话对于一个c后面的f都只需要这个c就能带掉,而f的长度小于2就是非法的。

实现

我的方法是先特判没有cf的情况和没有c的情况。

读入之后记录所有c的位置得到一个数组,判断非法即相邻两个位置距离要大于等于22。

而环形的情况只要在后边多加一个就行了,即第一个往后移动|S||S|。

代码

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <stack>
#include <queue>
#include <string>
#include <vector>
#include <set>
#include <map>#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define sz(x) ((int)(x).size())
#define fi first
#define se second
using namespace std;
typedef long long LL;
typedef vector<int> VI;
typedef pair<int,int> PII;
LL powmod(LL a,LL b, LL MOD) {LL res=1;a%=MOD;for(;b;b>>=1){if(b&1)res=res*a%MOD;a=a*a%MOD;}return res;}
// head
const int N = 1E6+5;
char s[N];
vector<int> pos;int solve(int len) {int vlen = pos.size();if (vlen == 0) return (len+1)/2;pos.pb(len+pos[0]);for (int i = 0; i < vlen; i++) {if (pos[i] >= pos[i+1]-2) return -1;}return vlen;
}
int main()
{int t, cas = 1;scanf("%d", &t);while (t--) {pos.clear();scanf("%s", s);int len = strlen(s);bool res = true;for (int i = 0; i < len; i++) {if (s[i] == 'c') {pos.pb(i);} else if (s[i] != 'f') {res = false;break;}}printf("Case #%d: %d\n", cas++, res ? solve(len) : -1);}return 0;
}

hdu 5455 Fang Fang 2015沈阳网络赛 模拟相关推荐

  1. hdu5461(2015沈阳网络赛L题)

    题意: 给出一个数列,我们要在这里找出两个数,使得题意中那个表达式最大. 思路: 排两个序就好了啊,看代码一下就懂了. 代码: #include <cstdio> #include < ...

  2. hdu5452(2015沈阳网络赛C题)

    题意: 给出一个无向图和一个此图的生成树,让我们求一个本图的最小割边集,割边集只包括生成树中的一条边,让割边集的边数最少,输出数目. 思路: 并查集+暴力. 代码: #include<cstdi ...

  3. hdu5455(2015沈阳网络赛F题)

    题意: 给出一个串,问用题中定义的那些串来组成这个串最少要用多少个. 思路: 没啥说的,注意一下输入的串中可能出现除了c和f的字母. 代码: #include<cstdio> #inclu ...

  4. hdu5459(2015沈阳网络赛J题)

    题意: 给出一个类似于斐波那契数组的字符串的定义,给出一个n,让求第n个串中任意两个c的距离的和. 思路: 我们用了三个小时找规律,最后发现是递推... 代码: #include <cstdio ...

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

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

  6. HDU 6203 2017沈阳网络赛 LCA,DFS+树状数组

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6203 题意:n+1 个点 n 条边的树(点标号 0 ~ n),有若干个点无法通行,导致 p 组 U V ...

  7. 记2015沈阳区域赛

    前记 基本确定了要去沈阳和上海打区域赛,听说苏大cp也会沈阳,于是我们的最终目标变为了压苏大. 周五 下午一点左右的飞机,本来想要早上赶概率论作业然后交到学校去,结果睡晚了,干脆就早点去了机场,然后大 ...

  8. HDU 6889 Graph Theory Class(CCPC网络赛)

    hdu 6889 传说中的人均min25 题意: n个点的完全图,边权为lcm(i+1,j+1),求mst(最小生成树) 题解: 我一开始以为是推公式,毕竟数据范围这么大,但是自己画图来看看mst的情 ...

  9. ACM/ICPC2016沈阳网络赛(不完全)解题报告

    比赛地址: http://acm.hdu.edu.cn/contests/contest_show.php?cid=724 1003.hannnnah_j's Biological Test 题目大意 ...

  10. 2015长春网络赛 —— B. Ponds (拓扑排序删点+DFS)

    题目描述 Description Betty owns a lot of ponds, some of them are connected with other ponds by pipes, an ...

最新文章

  1. php点击按钮后弹窗,如何在静态页添加按钮,点击时弹出功能界面
  2. 单例模式的java实现
  3. 使用IDEA创建一个Servlet应用程序
  4. PowerDesigner 15.1 安装步骤详细图解及破解
  5. 云漫圈 | 学Python还是Java, 8张漫画带你全面分析
  6. 【转】Android AlertDialog自定义布局
  7. 每次请求刷新token的时间
  8. 使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题
  9. Java基础篇:循环语句之do-while循环
  10. oracle 回收站
  11. 量子计算会带来什么样的革命?
  12. VC++ 各个版本(2005 2008 2010 2012 2013 2015 2017)的运行库下载
  13. Excel-工作周报(月报)【改良版】
  14. 随手写的一些好用的功能(不定时更新)
  15. R语言使用order函数对dataframe数据进行排序、基于单个字段(变量)进行降序排序(DESCENDING)
  16. php 立方根,PHP立方根
  17. 从win7到win10的那些事~
  18. 51nod-2534 最小旅行路线
  19. Hadoop基础操作--查询集群的计算资源信息
  20. 苏炳添博士论文研究自己,奥运学术两兼顾,还是暨大副教授,网友:真正的Run数据...

热门文章

  1. easypoi 语法_【语法微课合集】50堂英语语法微课,视频课件免费下载,建议收藏或转发朋友圈...
  2. MATLAB对数刻度绘图 (不等间距坐标绘图)
  3. Netgear R6800 padavan稳定固件亲测
  4. 考察交互的方差分析与简单效应分析(附带操作数据)
  5. win10右键卡顿原因_右键菜单反应慢?win10系统解决右键菜单卡顿方法
  6. matlab地理数据导入,基于Matlab的栅格地理数据处理-快速入门系列(1)
  7. 线性方程组解个数的判定和求解
  8. 【线性代数(12)】线性方程组、方程组解的结构
  9. 微信记账本小程序(代码+功能介绍)
  10. 计算机无法显示大容量,Win7系统电脑提示“usb大容量存储设备 代码10”的解决方法...