A. Sasha and Sticks

水题,判断一下次数的奇和偶就可以的。

B. Petya and Exam

赛上的时候没有写出来,orz,记录一下吧。

题意:给出一个模式串,可能会有?和*两种符号,*最多有一个。?可以被好的字符代替,*可以被空串,坏的字符,坏的字符串代替,现在给出n个字符串,问这些字符串是否满足要求。好的字符在开头已经给出。

思路:

对于不包含*的串,直接判断?位置的是否都为好字符就ok了。

对于包含*的串,做如下处理,首先把*代表的bad串提取出来,再把模式串中的*擦除,然后将bad串插入模式串中,将现在的模式串与输入的串进行比较。提取bad串所用的方法,不是判断坏字符,因为原字符串可能全是坏字符,而是利用原字符串与现在的字符串的长度的差来从*位置开始提取。这其中用到了string的很多黑科技。

代码:

 #include <stdio.h>
#include <string.h>
#include <string>
#include <vector>
#include <iostream>
using namespace std; bool a[]; int pos[]; int main()
{
string s; cin >> s; for (int i = ;i < s.size();i++)
{
a[s[i]-'a'] = ;
} string pa; cin >> pa; int cnt = ; int mark = -; for (int i = ;i < pa.size();i++)
{
if (pa[i] == '?')
{
pos[cnt++] = i;
} if (pa[i] == '*')
{
mark = i;
}
} int n; scanf("%d",&n); if (mark == -)
{
for (int i = ;i < n;i++)
{
bool f = ; string t; string tpa = pa; cin >> t; for (int j = ;j < cnt;j++)
{
if (f) break; int id = t[pos[j]] - 'a'; if (!a[id]) f = ;
else tpa[pos[j]] = t[pos[j]];
} if (tpa != t) f = ; if (f) cout << "NO\n";
else printf("YES\n");
}
}
else
{
for (int i = ;i < n;i++)
{
string t; cin >> t; string tmp = pa; tmp.erase(mark,); int des = t.size() - tmp.size(); if (des < ) cout << "NO\n";
else if (des == )
{
bool f = ; for (int j = ;j < t.size();j++)
{
if (tmp[j] == '?')
{
char c = t[j]; if (!a[c-'a'])
{
f = ;
break;
}
}
else if (tmp[j] != t[j])
{
f = ;
break;
}
} if (f) cout << "NO\n";
else cout << "YES\n";
}
else
{
string bad; bool f = ; for (int j = ;j < des;j++)
{
char c = t[mark+j]; if (a[c-'a'])
{
f = ;
break;
}
else bad.push_back(c);
} if (!f)
tmp.insert(mark,bad); //cout << bad << " " << tmp << endl;; for (int j = ;j < t.size();j++)
{
if (tmp[j] == '?')
{
char c = t[j]; if (!a[c-'a'])
{
f = ;
break;
}
}
else if (tmp[j] != t[j])
{
f = ;
break;
}
} if (f) cout << "NO\n";
else cout << "YES\n";
}
} } return ;
}

codeforces round 425 div2的更多相关文章

  1. Codeforces Round #539 div2

    Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...

  2. 【前行】◇第3站◇ Codeforces Round #512 Div2

    [第3站]Codeforces Round #512 Div2 第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间 Rating又掉了……但是没什么,比上一次好多了: ...

  3. Codeforces Round#320 Div2 解题报告

    Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...

  4. Codeforces Round #564(div2)

    Codeforces Round #564(div2) 本来以为是送分场,结果成了送命场. 菜是原罪 A SB题,上来读不懂题就交WA了一发,代码就不粘了 B 简单构造 很明显,\(n*n\)的矩阵可 ...

  5. Codeforces Round #361 div2

    ProblemA(Codeforces Round 689A): 题意: 给一个手势, 问这个手势是否是唯一. 思路: 暴力, 模拟将这个手势上下左右移动一次看是否还在键盘上即可. 代码: #incl ...

  6. Codeforces Round #626 Div2 D,E

    比赛链接: Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) D.Present 题意: 给定大 ...

  7. CodeForces Round 192 Div2

    This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...

  8. Codeforces Round #359 div2

    Problem_A(CodeForces 686A): 题意: \[ 有n个输入, +\space d_i代表冰淇淋数目增加d_i个, -\space d_i表示某个孩纸需要d_i个, 如果你现在手里 ...

  9. Codeforces Round #360 div2

    Problem_A(CodeForces 688A): 题意: 有d天, n个人.如果这n个人同时出现, 那么你就赢不了他们所有的人, 除此之外, 你可以赢他们所有到场的人. 到场人数为0也算赢. 现 ...

随机推荐

  1. 简单使用git和github来管理代码----配置与使用

    在以前没听说过github之前,自己写的代码很容易丢或者遗失,等到用时才知码到用时方恨丢,现在用了github,真的是替自己生省不少的事,闲话不多说,上教程. 1 在github上注册账号 https ...

  2. 走近webpack(5)--devtool及babel的使用

    这一章咱们来说一下如何使用babel以及如何用webpack调试代码.这是基础篇的最后一章,这些文章只是罗列的给大家讲解了在一些场景中webpack怎样使用,这章结束后会给大家讲解一下如何在我们实际的 ...

  3. 笔记:JDBC 数据库

    数据库 URL 在连接数据库时,我们必须使用各种与数据库类型相关的参数,例如主机名.端口号和数据库名称等,JDBC使用了一种与普通URL相类似的语法来描述数据库,JDBC URL 一般语法为: jdb ...

  4. if判断 -z -n 参数

    _echo_error() { echo -ne "\033[31;1m $1\033[0m\n";}_echo_ok() { echo -ne "\033[32;1m ...

  5. linux --> fork()详解

    fork()详解 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个 ...

  6. 基于hi-nginx的web开发(python篇)——表单处理和文件上传

    hi-nginx会自动处理表单,所以,在hi.py框架里,要做的就是直接使用这些数据. 表单数据一般用GET和POST方法提交.hi-nginx会把这些数据解析出来,放在form成员变量里.对pyth ...

  7. sql操作知识点个人笔记(SQLServer篇)

    实际工作中,总会遇到一些常用的或不常用的sql,这些sql可能并没多少技术含量,但对我们本身而言,一个最大的问题就是很容易忘记.对我个人而言,以前常用的,过阵子之后再用到,发现不记得了.由此得出结论, ...

  8. Python基础-week05

    本节大纲:Author:http://www.cnblogs.com/Jame-mei 模块介绍 time & datetime模块 random os sys shutil json &am ...

  9. 在Python中进行JSON转化

    序列化,指的是把内存中的变量(如类的实例)变成可存储或可传输的过程. JSON(JavaScript Object Notation, JavaScript对象表示)是网络传输中经常使用的一种数据形式 ...

  10. java中的异常类型以及区别????

    一.引言 根据JDK的文档我们能够找到异常所在的包:java.lang.Throwable中,Throwable是所有异常类的根类,error是错误,在java.lang.error中,而Except ...