hdu5455 Fang Fang(沈阳网赛)
来源:互联网 发布:mac免费的视频播放器 编辑:程序博客网 时间:2024/04/28 07:30
Fang Fang
Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 318 Accepted Submission(s): 137
Problem Description
Fang Fang says she wants to be remembered.
I promise her. We define the sequenceF of strings.
F0=‘‘f",
F1=‘‘ff",
F2=‘‘cff",
Fn=Fn−1+‘‘f",forn>2
Write down a serenade as a lowercase stringS in a circle, in a loop that never ends.
Spell the serenade using the minimum number of strings inF , or nothing could be done but put her away in cold wilderness.
I promise her. We define the sequence
Write down a serenade as a lowercase string
Spell the serenade using the minimum number of strings in
Input
An positive integer T , indicating there are T test cases.
Following areT lines, each line contains an string S as introduced above.
The total length of strings for all test cases would not be larger than106 .
Following are
The total length of strings for all test cases would not be larger than
Output
The output contains exactly T lines.
For each test case, if one can not spell the serenade by using the strings inF , output −1 . Otherwise, output the minimum number of strings in F to split S according to aforementioned rules. Repetitive strings should be counted repeatedly.
For each test case, if one can not spell the serenade by using the strings in
Sample Input
8ffcfffcffcffcffcfffcffcffcffcfffffcffcfffcffcfffcffffcfffffcffcffc
Sample Output
Case #1: 3Case #2: 2Case #3: 2Case #4: -1Case #5: 2Case #6: 4Case #7: 1Case #8: -1HintShift the string in the first test case, we will get the string "cffffcfffcff"and it can be split into "cffff", "cfff" and "cff".
Source
2015 ACM/ICPC Asia Regional Shenyang Online
题意:找出所给字符串有多少个满足题目所给条件的子串。
分析:先找到第一个c,然后把字符串扫一遍,c后面的 f 数大于等于2计数器加 1 。注意:字符串里可以有除c和 f 以外的字符,还有!!如果字符串全为 f ,输出并不是-1或0什么的!!!坑,题目并没有说明这一点。
#include <iostream>#include <cstdio>#include <cstring>#include <stack>#include <queue>#include <map>#include <set>#include <vector>#include <cmath>#include <algorithm>using namespace std;const double eps = 1e-6;const double pi = acos(-1.0);const int INF = 0x3f3f3f3f;const int MOD = 1000000007;#define ll long long#define CL(a) memset(a,0,sizeof(a))char s[1000010];int main (){ int T; cin>>T; for (int cas=1; cas<=T; cas++) { cin>>s; cout<<"Case #"<<cas<<": "; int k=0; bool flag = false; if (s[0]==' ') { cout<<"0"<<endl; continue; } for (int i=0; s[i]; i++,k++)//找到第一个c { if (s[i]!='c'&&s[i]!='f') {flag=true; break;} if (s[i]=='c') {break;} } //cout<<k<<endl; if (s[k]=='\0')//若全为f,输出最小个数 { cout<<k/2+k%2<<endl; continue; } int cnt=0,ans=1; for(int i=k+1; s[i]; i++)//从第一个c后面开始找 { if (s[i]!='c'&&s[i]!='f') {flag = true; break;} if (s[i]!='c') cnt++; else { if (cnt>=2){cnt=0; ans++;}//如果c后面的f个数大于2个,加1 else {flag=true; break;} } } if (k+cnt<2) flag=true;//特判,如果第一个c后面的f不足2个 if (flag) cout<<"-1"<<endl; else cout<<ans<<endl; } return 0;}
0 0
- hdu5455 Fang Fang(沈阳网赛)
- hdu5455 Fang Fang(模拟)
- HDU-5455 Fang Fang(2015沈阳网赛,带坑点水题)
- HDU5455 Fang Fang 模拟
- HDOJ 5455 Fang Fang(字符串)(沈阳网络赛)
- HDU 5455 Fang Fang 2015沈阳网络赛
- hdu 5455 Fang Fang 2015沈阳网络赛 模拟
- HDU 5455 Fang Fang(2015沈阳赛区网络赛)
- Fang Fang
- Fang Fang
- HDU 5455 Fang Fang(字符串模拟)
- Fang Fang hdoj 5455 (字符串)
- hdu 5455 Fang Fang(思维)
- hdu 5455 Fang Fang(字符串处理)
- HDU 5455 Fang Fang(模拟)
- (fang jian 2015)
- HDU 5455 Fang Fang
- HDOJ5455 Fang Fang(模拟)
- 打开Voice Over时,CATextLayer的string对象兼容NSString和NSAttributedString导致的Crash(二解决思路3)
- layer-list解决listView中相邻item之间线的重叠的问题
- USACO 1.4 The Clocks (位操作+枚举+DFS)
- ios属性定义
- Spark修炼之道(进阶篇)——Spark入门到精通:第四节 Spark编程模型(一)
- hdu5455 Fang Fang(沈阳网赛)
- Ubuntu下python 报错 unknown url type
- 剑指offer-二进制中1的个数
- 点击按钮后切换图片
- Android 动画之一 Drawable Animation —— 逐帧(Frame)动画
- HDOJ 1846 Brave Game(巴什博奕)
- sublime常用快捷键
- LintCode 两个字符串是变位词
- CentOS 安装远程桌面工具 xrdp 0.6.1