2017年浙江中医药大学程序设计竞赛 C、寻找zcmu
2018-03-12 09:40
330 查看
题目链接:https://www.nowcoder.com/acm/contest/61/C
flag:模拟
*我们设定数组a[4]: 表示当前遍历数组,此刻达到连续z、zc、zcm的状态需要删除的最少字符数目!
*遍历到z,就更新a[1]为0;
遍历到c,因为a[1]中的z在之前zc的后面,所以此时的a[1]+c比a[2]的zc与后面的mu组合需要删除的数目更少;
例:zcavzfdlfgc……mu,一看便知第一个zc需要删去数目比第2个zc要多从第一个c到第2个z的距离+2;
a[2]=a[1];
同理,遍历到m时,a[3]=a[2];
遍历到u时,我们比较ans和a[3],得到最小值即可!
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int Size=1e5+10;
char s[Size];
int a[5];
int main(){
while(~scanf("%s",s)){
memset(a,-1,sizeof(a));
int str=strlen(s);
int ans=-1;
int j=0,temp=0;
for(int i=0;i<str;++i){
int flag=-1;
if(s[i]=='z'){a[1]=0;flag=1;}
else if(a[1]!=-1&&s[i]=='c'){a[2]=a[1];flag=2;}
else if(a[2]!=-1&&s[i]=='m'){a[3]=a[2];flag=3;}
else if(a[3]!=-1&&s[i]=='u'){ans=(ans==-1)?a[3]:min(ans,a[3]);a[3]=-1;}
for(int i=1;i<=3;++i)
if(a[i]!=-1&&flag!=i)++a[i];
}
printf("%d\n",ans);
}
return 0;
}
flag:模拟
*我们设定数组a[4]: 表示当前遍历数组,此刻达到连续z、zc、zcm的状态需要删除的最少字符数目!
*遍历到z,就更新a[1]为0;
遍历到c,因为a[1]中的z在之前zc的后面,所以此时的a[1]+c比a[2]的zc与后面的mu组合需要删除的数目更少;
例:zcavzfdlfgc……mu,一看便知第一个zc需要删去数目比第2个zc要多从第一个c到第2个z的距离+2;
a[2]=a[1];
同理,遍历到m时,a[3]=a[2];
遍历到u时,我们比较ans和a[3],得到最小值即可!
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int Size=1e5+10;
char s[Size];
int a[5];
int main(){
while(~scanf("%s",s)){
memset(a,-1,sizeof(a));
int str=strlen(s);
int ans=-1;
int j=0,temp=0;
for(int i=0;i<str;++i){
int flag=-1;
if(s[i]=='z'){a[1]=0;flag=1;}
else if(a[1]!=-1&&s[i]=='c'){a[2]=a[1];flag=2;}
else if(a[2]!=-1&&s[i]=='m'){a[3]=a[2];flag=3;}
else if(a[3]!=-1&&s[i]=='u'){ans=(ans==-1)?a[3]:min(ans,a[3]);a[3]=-1;}
for(int i=1;i<=3;++i)
if(a[i]!=-1&&flag!=i)++a[i];
}
printf("%d\n",ans);
}
return 0;
}
相关文章推荐
- 2017年浙江中医药大学大学生程序设计竞赛(重现赛)C - 寻找zcmu
- 2017年浙江中医药大学大学生程序设计竞赛 - C 寻找zcmu
- 2017年浙江中医药大学大学生程序设计竞赛(重现赛)B - 一生之敌
- 2017年浙江中医药大学大学生程序设计竞赛(重现赛)F - 开心的cc
- 2017年浙江中医药大学大学生程序设计竞赛 - B 一生之敌 (二分)
- 2017年浙江中医药大学大学生程序设计竞赛(重现赛)D - CC的神奇背包
- 【2017年浙江中医药大学大学生程序设计竞赛】B一生之敌 【二分+精度】
- 【2017年浙江中医药大学大学生程序设计竞赛】F 开心的cc 【线段树+思维】
- 寻找zcmu-2017浙江中医药大学程序设计
- 2017年浙江中医药大学大学生程序设计竞赛 - H 剪纸(DFS)
- 2017年浙江中医药大学大学生程序设计竞赛(重现赛)-H剪纸
- 2017年浙江中医药大学大学生程序设计竞赛-A:不存在的树(树链剖分)
- 2017年浙江中医药大学大学生程序设计竞赛(重现赛)A - 不存在的树
- 2017年浙江中医药大学大学生程序设计竞赛(重现赛)
- 2017年浙江中医药大学大学生程序设计竞赛(重现赛)H - 剪纸
- 2017年第12届黑龙江省大学生ACM程序设计竞赛以及第11届东北地区大学生程序设计竞赛总结
- XTU 1263 Super Resolution 2017年“嘉杰信息杯” 中国大学生程序设计竞赛全国邀请赛(湖南)
- 2017年“嘉杰信息杯” 中国大学生程序设计竞赛全国邀请赛 Partial Sum
- 2017年上海金马五校程序设计竞赛(网上资格赛)J : Raising Bacteria
- 2017年上海金马五校程序设计竞赛(网上资格赛)Problem H : DHU Club Festival