1381 包饺子
来源:互联网 发布:隆多生涯数据 编辑:程序博客网 时间:2024/06/11 01:54
【背景】
2008.11.16
3721大班在Mr Lv 的组织下,到六食堂举办了一次集体包饺子活动:)
这次活动很成功,大家都很高兴,所谓“有缘千里,相聚北航”。
下来后,某人根据这次活动出了一套练习题……
------------------------------------------------
本次包饺子活动的重头戏之一:各个小班之间竞争包饺子,在限定时间内看谁包饺子多……
问题是,每个小组中还有捣乱的存在(当然是安排的其他小班的)……
假设制作饺子的流程是:
拿皮->放馅->封口->放饺子->拿皮->…这样的一个序列;
这样一个合法的序列就可以表示成为一个字符串:
abcdabcdabcd…
某个小组的捣乱的干的一个事情是:
把某些子串翻转,也就是假设原来串是abcdabcd,捣蛋者从第3个位置开始连续3个操作翻转,就成为了abadcbcd。这样的影响是什么呢?
当然某些饺子就无法完工了,因为必须一个完整的abcd才算一个饺子完工;
不过捣乱时间比较短,所以有时候翻转后反而把以前捣乱成果破环也有可能……
现在的任务是,知道原始序列,长度为n的一个字符串,这个字符串的顺序肯定是abcd的循环,但结束时候不一定是一个完整的abcd,也就是说可能时间到时候最后那个饺子还没有完工,比如abcdab表示第一个饺子完工了,第二个饺子正在放陷。
又知道捣乱者做了m次操作,每次都是从ai位置开始的连续3个操作字符翻转;
评委想知道究竟这个小组做了多少个饺子;
计数规则是:从第一个操作字符开始扫描,每扫描到一个完整的abcd算作一个饺子;
- 输入
第一行包含一个整数T,表示有T组数据;
以下每组数据结构:
第一行为两个整数N,M,分别表示操作序列有N,捣乱次数为M;
第二行为一个长度为N的字符串,为abcd的循环;
第三行为M个正整数,表示第i次捣乱的起始位置,保证合法(不会出现+3个字符后超过N)
保证N小于1000,M小于50;
- 输出
对于每组数据输出一行,包含一个整数表示最后成功制作出的饺子的数目;
- 样例输入
1
16 3
abcdabcdabcdabcd
2 3 5
- 样例输出
2
模拟题
#include <stdio.h>main(){int number,te;int n,m,count;char a[1000];int i,j;int up;char temp1,temp2;scanf("%d",&number);for(te=1;te<=number;te++){ count=0;scanf("%d %d",&n,&m);getchar();scanf("%s",&a);for(i=0;i<m;i++){scanf("%d",&up);temp1=a[up-1];temp2=a[up+1];a[up-1]=temp2;a[up+1]=temp1;}for(i=0;i<=n-4;i++){if(a[i]=='a'&&a[i+1]=='b'&&a[i+2]=='c'&&a[i+3]=='d')count++;}printf("%d\n",count);}}
- 1381 包饺子
- 包饺子
- 继续包饺子
- 如何包饺子
- [分享]包饺子全攻略
- 饺子
- 饺子
- 使用BlockingQueue实现包饺子( 生产者做面皮,消费者拿面皮包饺子)简单使用
- 机器人餐厅 机器人包饺子卖技又卖萌
- 蟹黄饺子!!
- 北方饺子
- 散文 饺子
- (油条)秘方--包学包会 韭菜盒 发糕 饺子 水煎包 灌汤小笼包 蒸包 - Qzone日志
- 扎克伯格过春节晒饺子,猜猜哪个是他包的?
- 饺子和香蕉片
- 饺子的10种包法
- 好吃不过饺子~
- 人生就像饺子
- 11. A close mouth catches no flies. 病从口入
- SQL日期集合-周、月、季度、年等计算以及自定义函数
- JAVA [Timer]
- 1380 做饺子皮
- 设计创新的十九条秘笈
- 1381 包饺子
- 1382 I’M大胃王
- 1384 被忽视的MM
- 调用Adobe的axAcroPDF组件或者Webbrowser显示pdf档退出时发生内存错误
- 1385 我得了多少票?
- SQL基础
- hdu 1711(KMP)
- 1386 回文单词
- SQL Server Tips ----- CELL-LEVEL ENCRYPTION IN SQL SERVER