HDU 5455
2015-09-19 21:15
309 查看
Fang Fang
Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 278 Accepted Submission(s): 127
[align=left]Problem Description[/align]
Fang Fang says she wants to be remembered.
I promise her. We define the sequence F
of strings.
F0 = ‘‘f",
F1 = ‘‘ff",
F2 = ‘‘cff",
Fn = Fn−1 + ‘‘f", for n > 2
Write down a serenade as a lowercase string S
in a circle, in a loop that never ends.
Spell the serenade using the minimum number of strings in
F,
or nothing could be done but put her away in cold wilderness.
[align=left]Input[/align]
An positive integer T,
indicating there are T
test cases.
Following are T
lines, each line contains an string S
as introduced above.
The total length of strings for all test cases would not be larger than
106.
[align=left]Output[/align]
The output contains exactly
T
lines.
For each test case, if one can not spell the serenade by using the strings in
F,
output −1.
Otherwise, output the minimum number of strings in
F
to split S
according to aforementioned rules. Repetitive strings should be counted repeatedly.
[align=left]Sample Input[/align]
8 ffcfffcffcff cffcfff cffcff cffcf ffffcffcfff cffcfffcffffcfffff cff cffc
[align=left]Sample Output[/align]
Case #1: 3 Case #2: 2 Case #3: 2 Case #4: -1 Case #5: 2 Case #6: 4 Case #7: 1 Case #8: -1 Hint Shift the string in the first test case, we will get the string "cffffcfffcff" and it can be split into "cffff", "cfff" and "cff".
[align=left]Source[/align]
2015 ACM/ICPC Asia Regional Shenyang Online
[align=left]Recommend[/align]
wange2014 | We have carefully selected several similar problems for you: 5462 5460 5459 5458 5457
本题坑点,存在其他字符时输出-1;
空行输出 0;
题意:输出最小的F的个数,字符串可以构成环的,即前面的字符可以接到后面去.
S
#include <iostream> #include <cstdio> #include <cstring> #include <stack> #include <queue> #include <map> #include <set> #include <vector> #include <cmath> #include <algorithm> #include<cmath> #define INF 0x3f3f3f3f using namespace std; char s[1000010],s1[1100000]; int main() { int T; while(~scanf("%d%*c",&T)) { for(int Case=1; Case<=T; Case++) { int flag=0; gets(s); if(strlen(s)==0) { printf("Case #%d: 0\n",Case); continue; } int num=0; int i,len=strlen(s); for(i=0;i<len;i++) { if(s[i]!='f'&&s[i]!='c') { printf("Case #%d: -1\n",Case); flag=1; break; } } if(flag) continue; for(i=0; i<len; i++) { if(s[i]!='f') { break; } } int sum=0; if(i==len) { sum=len%2; sum+=len/2; } else { for(int j=i; j<len; j++) { s1[num++]=s[j]; } for(int j=0; j<i; j++) s1[num++]='f'; s1[num]='\0'; //cout<<'$'; for(int j=0; j<len; j++) { //cout<<s1[j]; if(s1[j]=='c'&&(s1[j+1]!='f'||s1[j+2]!='f')) { printf("Case #%d: -1\n",Case); flag=1; break; } else if(s1[j]=='c'&&(s1[j+1]=='f'&&s1[j+2]=='f')) { sum++; } } } if(flag==0) printf("Case #%d: %d\n",Case,sum); } } return 0; }
相关文章推荐
- 【BZOJ】1016 生成树计数 最小生成树 Maxtrix-Tree定理 生成树计数 搜索
- 游戏开发观念又转变了-需要学习更多
- LintCode Majority Number II / III
- Camera显示之Hal层的适配
- 无锁编程 - 大纲
- AVL树,红黑树,B树,B+树,Trie树应用场景简介
- java 编程IDE-eclipse使用基础问题
- 项目开发指引
- 无锁编程 - 大纲
- 【poj2104】K-th Number 分块
- hiho1087 Hamiltonian Cycle 位运算+记忆化搜索 求哈密顿回路数量
- 函数指针和指针函数
- POJ 1502 水 dij
- sp<> 强指针类的用法
- 【五校联考2015 9.19】C
- 从网络解析数据并实现三个界面的跳转
- iOS 应用开发,用户密码存储技术--KeyChain
- 微博分享坑
- android studio 使用库
- SQL语句