UVALive - 4222
题目链接:https://vjudge.net/contest/244167#problem/D
题目:
1 A dip can only appear 1 or 2 steps after a jiggle, or before a twirl, as in: • ...jiggle dip... • ...jiggle stomp dip... • ...dip twirl...
2 All dances end with a clap stomp clap.
3 If a dance contains a twirl, it must have a hop.
4 No dance can start with a jiggle.
5 All dances must have a dip.
As instructor at a dance composition school, you must grade many freshman attempts at composing dances. You decide to make an automatic grader that can check against these rules.
The input consists of a number of dances, one per line. Each dance has a maximum of 1000 steps. Each step is separated by a single space, and all steps are lowercase alphabetic words at most 100 letters long.
If a dance in the input has no mistakes, then the output should contain the words ‘form ok:’ followed by the original composition.
If a dance has a single type of form error, then the output should contain the words ‘form error K:’ where K is the rule which failed, followed by the composition.
If a dance has multiple types of form errors, then the output should contain the errors as a comma separated clause, as in “form errors K(1) K(2) ... K(N −1) and K(N):’ where the form errors are in increasing order, followed by the composition.
If a dance has form error 1, every dip in the dance that violates rule 1 should be printed in upper case.
dip hop jiggle hop hop clap stomp clap
dip twirl hop jiggle hop hop clap clap stomp
jiggle dip twirl hop jiggle hop hop clap stomp clap
jiggle dip
jiggle
dip twirl hop dip jiggle hop dip hop clap stomp clap
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
string str;
int flag[]; int main()
{
while(getline(cin,str))
{
vector<string> vec;
memset(flag,,sizeof(flag));
for(int i=;i<;i++)
vec.clear();
int len=str.length();
string ss;
for(int i=;i<len;i++)
{
if(str[i]!=' ')
{
ss+=str[i];
}
if(str[i]==' '||i==len-)
{
vec.push_back(ss);
ss="";
}
}
//判断条件2
if(str.size()<)
flag[]=;
else
{
string sss=str.substr(str.size()-,);
//cout<<sss<<endl;
if(sss!="clap stomp clap")
flag[]=;
}
//cout<<flag[2]<<endl;
str.clear();
int l=vec.size(),cntdip=,cnthop=,cnttwirl=;
for(int i=;i<l;i++)
{
//cout<<vec[i]<<endl;
if(vec[]=="jiggle") //判断条件4
{
flag[]=;
}
if(vec[i]=="twirl")
cnttwirl++;
if(vec[i]=="hop")
cnthop++;
if(vec[i]=="dip") //判断条件1
{
cntdip++;
int flag1=,flag2=,flag3=;
if(i>=&&vec[i-]=="jiggle")
flag1=;
if(i>=&&vec[i-]=="jiggle")
flag2=;
if(i<=l-&&vec[i+]=="twirl")
flag3=;
if(flag1==&&flag2==&&flag3==) //全都不符合说明是错的
{
flag[]=;
vec[i]="DIP";
}
}
}
if(cnttwirl!=&&cnthop==) //判断条件3
flag[]=;
if(cntdip==) //判断条件5
flag[]=;
int cnt=,k;
for(int i=;i<=;i++)
{
if(flag[i])
{
cnt++;
k=i;
}
}
if(cnt==)
cout<<"form ok: ";
else if(cnt==)
printf("form error %d: ",k);
else
{
int k=;
printf("form errors ");
for(int i=;i<=;i++)
{
if(flag[i])
{
k++;
if(k==cnt-)
printf("%d and ",i);
else if(k==cnt)
printf("%d: ",i);
else
{
printf("%d, ",i);
}
}
}
}
for(int i=;i<l;i++)
{
if(i==)
cout<<vec[i];
else
cout<<" "<<vec[i];
}
cout<<endl;
}
return ;
}
UVALive - 4222的更多相关文章
- UVALive 4222 Dance 模拟题
Dance 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ...
- UVALive 4222 /HDU 2961 Dance 大模拟
Dance Problem Description For a dance to be proper in the Altered Culture of Machinema, it must abid ...
- UVALive - 4108 SKYLINE[线段树]
UVALive - 4108 SKYLINE Time Limit: 3000MS 64bit IO Format: %lld & %llu Submit Status uDebug ...
- UVALive - 3942 Remember the Word[树状数组]
UVALive - 3942 Remember the Word A potentiometer, or potmeter for short, is an electronic device wit ...
- UVALive - 3942 Remember the Word[Trie DP]
UVALive - 3942 Remember the Word Neal is very curious about combinatorial problems, and now here com ...
- 思维 UVALive 3708 Graveyard
题目传送门 /* 题意:本来有n个雕塑,等间距的分布在圆周上,现在多了m个雕塑,问一共要移动多少距离: 思维题:认为一个雕塑不动,视为坐标0,其他点向最近的点移动,四舍五入判断,比例最后乘会10000 ...
- UVALive 6145 Version Controlled IDE(可持久化treap、rope)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...
- UVALive 6508 Permutation Graphs
Permutation Graphs Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit ...
- UVALive 6500 Boxes
Boxes Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Pract ...
随机推荐
- C# Note12:WPF只允许数字的限制性TextBox
在使用中,我们经常遇到文本框中只允许输入数字(整型数或浮点数...) 的情况,如果我们输入特殊字符(字母和符号...),在获取其输入值时,如果先做判断或其他处理,会直接导致application发生c ...
- Form组件归类
一.Form类 创建Form类时,主要涉及到 [字段] 和 [插件],字段用于对用户请求数据的验证,插件用于自动生成HTML; 1.Django内置字段如下: 1 Field 2 required=T ...
- Linux基础学习(12)--Linux服务管理
第十二章——Linux服务管理 一.服务简介与分类 1.服务的分类: 注:独立的服务放在内存中(好处:响应的速率快,坏处:独立的服务越多,耗费的内存资源越多):xinetd服务本身是独立的,在内存中, ...
- mvn clean compile package install deploy
(1) package 目的是打包,在pom中,如果是jar就会打包成jar,如果是war就会打包成war 在pom.xml中: <modelVersion></modelVersi ...
- 前端传送JSON数据,报Required request body is missing
声明: 后端为Java,采用SSM框架 前端一个JSON.stringify()传来的json字符串,后端一般用@RequestBody标签来定义一个参数接收 但问题在于,当我使用get方式传JSON ...
- QTP 自动货测试桌面程序-笔记-运行结果中添加截图
3种方法: 方法1:使用设置:SnapshotReportMode oldMode = Setting("SnapshotReportMode") Setting("Sn ...
- orcale增加列脚本
--编号declare v_cnt number; V_SQL VARCHAR2 (500) := '';begin select count(*) into v_cnt from dual wher ...
- How to RAMDISK on macOS
diskutil erasevolume HFS+ 'RAM Disk' `hdiutil attach -nomount ram://8388608`
- Linux压缩和解压命令
zip命令: 压缩 :zip -r files.zip fileFolder 解压:unzip files.zip tar命令: 压缩:tar -cvf files.tar fileFolder 解压 ...
- Recursive sequence HDU - 5950 (递推 矩阵快速幂优化)
题目链接 F[1] = a, F[2] = b, F[i] = 2 * F[i-2] + F[i-1] + i ^ 4, (i >= 3) 现在要求F[N] 类似于斐波那契数列的递推式子吧, 但 ...