5.1 qbxt 一测 T1
禁咒检验
(3MB / 2s)
【问题描述】
在古老的世界里,有一个神奇的职业叫做魔法师。
魔法师的特点是会魔法,施放魔法需要念咒语。
在古老的世界里,有一个神奇的职业叫做码农。码农的工作是帮助魔法师记录咒语。
码农用 0 和 1 来记录咒语, 所以一个咒语可以用一个仅由 0 和 1 构成的字符串 S 表示。
魔法师念咒语时就是把 S 从左到右读一遍。随着 0 和 1 的默念,魔法的能量从魔法师体内涌出。
如果魔法师连续念的 4 个字符中, ‘0’的数量不到 2 个,那么魔法师的体力
会大量消耗。如果魔法师念 S 时会出现大量消耗体力的情况,那么 S 就被称为
禁咒。例如“010101”不是禁咒,但“001101000”是禁咒,因为魔法师会在连
续念出“1101” 。
码农的一个重要任务,就是帮助魔法师判断一条咒语是不是禁咒。
因为在古老的世界里,还没有印刷术,更没有计算机,所以信息存储全靠手
写,所以如果 S 很长,码农是不会把 S 抄下来的,只会去背下一部分。相应的,
本题的内存仅能使用 3MB 。为避免程序运行时的额外内存计入这 3MB,评测时
会开 6MB, 但是你仍应当成 3MB 来写代码, 只是不必担心系统抢你仅有的 3MB
内存。
【输入格式】
一行一个字符串 S,表示咒语
【输出格式】
如果 S 是禁咒,输出“Yes” ,否则输出“No”
【样例输入】
100010101
【样例输出】
No
【数据规模和约定】
对于 60%的数据, 1<=|S|<=1000
对于 100%的数据, 1<=|S|<=10^7
考场解题:
这明显的在线做啊,用两个 int 变量记录一下,int a 表示 1 的
出现,int b 表示 0 的出现,若 b=2 是让 a 和 b 归零,若 a=3 了,则
判断一下 b 是不是小于 2,若小于 2 则输出‘Yes’ ,or 输出‘No’ ;
自己手造了几组样例,嗯,没毛病,感觉挺对的,就没再继续想。
then吃完饭回来,自己脑袋忽然灵光一闪,给自己举出了一个反例,
果然好像有 WA 的(0110100)
正解:
好像我想麻烦了哦,直接定义一个 char a[5]数组,若字符串的
长度大于 4 后,每输入一个字符,对它和它之前三个字符统计一下 1
的数量,若数量超过了 3 个,则可以直接 break 掉,输出‘Yes’ ,输
入完以后没有 break 则输出‘No’就好咯。
哇,原来开 2s 是因为这啊,挺简单的,考场上咋就没想到呢。
据老师自己说没有准备卡 scanf,结果最后一个
点还是卡了,getchar()就可以过。
期望的分:100
实际得分:60
代码:
#include <cstdio>
#include <iostream>
#include <queue>
#include <vector>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
//#define DEBUG
using namespace std;
int main()
{
freopen("str.in","r",stdin);
freopen("str.out","w+",stdout);
queue<char>str;
int zero(),one();
bool ok(false);
char ch(getchar());
for(;ch == '' || ch == '';ch = getchar())
{
str.push(ch);
//cout<<ch;
if(ch == '')
{
++zero;
}
if(str.size() == )
{
if(zero < )
{
ok = true;
break;
}
if(str.front() == '')--zero;
str.pop();
}
}
if(ok)printf("Yes\n");
else printf("No\n");
return ;
}
5.1 qbxt 一测 T1的更多相关文章
- NOI十连测 第六测 T1
思路: 用treap动态维护,记一个sum1,sum2,注意!,写treap如果有删除操作,千万不能把权值相同的分开来..,这在删除的时候会进入死循环,这是一个惨痛的教训... #include< ...
- NOI十连测 第五测 T1
#include<cstdio> #include<cstring> #include<cmath> #include<iostream> #inclu ...
- NOI十连测 第四测 T1
思路:首先每个蚂蚁移速相同,而且碰到就转头,这其实等价于擦肩而过! 看到2n个数互不相同就觉得方便多了:枚举每个数字往左或者往右作为最慢,然后考虑其他蚂蚁有多少种走路方向. (1),走的距离大于m/2 ...
- NOI十连测 第三测 T1
这么二逼的题考试的时候我想了好久,我真是太弱了... 首先,由于ans都乘上了i*(i-1)/2,实际上要求的就是每个数的所有可能出现次数*这个数的权值. 我们发现,每个数的本质是一样的,我们记一个s ...
- BZOJ NOI十连测 第二测 T1
出题人居然是个哲学家.. 26%的程序,太SB了...本来我的想法也是二分+贪心,但是贪心是个怪怪的SX贪心.. #include<algorithm> #include<cstdi ...
- BZOJ NOI十连测 第一测 T1
思路:首先考虑t=1的情况,t等于1,那么所有位置的颜色相同,我们不用考虑概率的问题,那么,k+d*x在模d下都相等,我们考虑预处理一个数组s[i][j],代表d为i,起始位置为j的等差数列的和,这个 ...
- 5.1 qbxt 一测 T3
反物质[问题描述] 物理学家有一种假设,世界上存在反物质,反物质遇到正常的物质会发生湮灭. 假设现在有 n 个粒子,每个粒子的种类用一个 m 以内的正整数表示.现在要将这些粒子按一定顺序放入一个封闭空 ...
- 5.1 qbxt 一测 T2
求和[问题描述] 组合数 C(n,m)是从 n 个物品中取 m 个的方案数. C(n,m)=(n!)/(m!(n-m)!) 斐波那契数列 F 满足,F[0]=F[1]=1,n≥2 时 F[n]=F[n ...
- Test 17
BZ OI 队测 T1: 题目大意: 喵星系有n个星球,标号为1到n,星球以及星球间的航线形成一棵树. 所有星球间的双向航线的长度都为1.小昕要在若干个星球建矿石仓库,设立每个仓库的费用为K.对于未设 ...
随机推荐
- POJ 2392【多重背包】
题意: k个块,给出每个块的高度hi,数量ci,不能超过的高度: 求这些块可以组成的最大高度一个. 思路: 大致可看这个题是一个背包,背包的承重是高度. 对于每个物品,有他的价值是高度,还有限定的数量 ...
- poj3181【完全背包+整数拆分】
题意: 给你一个数n,在给你一个数K,问你这个n用1-k的数去组合,有多少种组合方式. 思路: 背包重量就是n: 那么可以看出 1-k就是重物,价值是数值,重量是数值. 每个重物可以无限取,问题转化为 ...
- python 字典 dict items values keys
dict.items() 1 >>> d = dict(one=1,two=2) 2 >>> it1 = d.items() 3 >>> it1 ...
- bzoj1725: [Usaco2006 Nov]Corn Fields牧场的安排(状压dfs)
1725: [Usaco2006 Nov]Corn Fields牧场的安排 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1122 Solved: 80 ...
- Mac上搭建直播服务器Nginx+rtmp,实现手机推流、拉流
转载自http://www.cnblogs.com/jys509/p/5649066.html 简介 nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网 ...
- html 文本溢出显示省略号 .....
- _bzoj1096 [ZJOI2007]仓库建设【斜率优化dp】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1096 又是一道经典斜率优化. #include <cstdio> const i ...
- java自带线程池
1. newSingleThreadExecutor 创建一个单线程的线程池.这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务.如果这个唯一的线程因为异常结束,那么会有一个新的线程来替 ...
- Invitation Cards POJ 1511 SPFA || dij + heap
http://poj.org/problem?id=1511 求解从1去其他顶点的最短距离之和. 加上其他顶点到1的最短距离之和. 边是单向的. 第一种很容易,直接一个最短路, 然后第二个,需要把边反 ...
- 迭代器模式及php实现
迭代器模式: 迭代器模式是遍历集合的成熟模式,迭代器模式的关键是将遍历集合的任务交给一个叫做迭代器的对象,它的工作时遍历并选择序列中的对象,而客户端程序员不必知道或关心该集合序列底层的结构. 角色: ...