【Link】:http://codeforces.com/contest/832/problem/B

【Description】



*能代替一个字符串(由坏字母组成);

?能代替单个字符(由好字母组成);

问你每个串能不能被匹配

【Solution】



对于没有*的情况;

判断长度是否相同,不相同则不行;

否则看看问号所在的位置是不是?且,看看?对应的字母是不是好字母;

对于有*的情况;

先把左边和右边的字符和母串的对应位置对应起来;

左对齐比较右对齐比较

然后中间部分就是用坏字母组成的字符串了;

对于母串的长度小于等于匹配串长度-2的直接输出无解;

对于母串长度等于匹配串长度-1的,除非匹配串里有*,否则直接输出无解;



【NumberOf WA】



1



【Reviw】



对于特殊情况;

还是分类讨论的方法比较好;

不然可能有意想不到的错误;

就比如这题;

我漏掉了长度不能相同;

而在长度不同的情况下对没有*的母串进行了匹配;



【Code】

 #include <bits/stdc++.h>
#define LL long long
using namespace std; string s,ts;
int good[300],len,fi=-1,Q; bool get_ans(){
if ((int) ts.size()<= (int) s.size()-2) return false;
if ((int) ts.size()== (int) s.size()-1 && fi==-1) return false;
if (fi==-1 && (int) ts.size()!=(int)s.size()) return false; int l = 0,r = ts.size()-1; for (int i = 0;i <= fi-1;i++){
if (s[i]!=ts[l]) {
if (s[i]!='?')
return false;
else
if (!good[ts[l]])
return false;
}
l++;
} for (int i = len-1;i >=fi+1;i--){
if (s[i]!=ts[r]){
if (s[i]!='?')
return false;
else
if (!good[ts[r]])
return false;
}
r--;
} for (int i = l;i <= r;i++)
if (good[ts[i]]) return false;
return true;
} int main(){
//freopen("F:\\rush.txt","r",stdin);
ios::sync_with_stdio();
cin >> s;
len = s.size();
for (int i = 0;i <= len-1;i++)
good[s[i]] = 1;
cin >> s;
len = s.size();
for (int i = 0;i <= len-1;i++)
if (s[i]=='*')
fi = i;
scanf("%d",&Q);
for (int i = 1;i <= Q;i++){
cin >> ts;
int ok = false;
if (get_ans()){
cout <<"YES"<<endl;
continue;
}
cout<<"NO"<<endl;
}
return 0;
}

【Codeforces Round #425 (Div. 2) B】Petya and Exam的更多相关文章

  1. 【 Codeforces Round #425 (Div. 2) D】Misha, Grisha and Underground

    [Link]:http://codeforces.com/contest/832/problem/D [Description] 给你一棵树; 然后给你3个点 让你把这3个点和点s,t,f对应; 然后 ...

  2. 【Codeforces Round #425 (Div. 2) A】Sasha and Sticks

    [Link]: [Description] [Solution] 傻逼题; 获取n/k; 对n/k的奇偶性讨论一下就好 [NumberOf WA] 0 [Reviw] [Code] #include ...

  3. 【Codeforces Round #445 (Div. 2) C】 Petya and Catacombs

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 看看时间戳为i的点有哪些. 每次优先用已经访问过的点. 如果不行就新创一个点. 注意新创点的时间戳也是i. [代码] #includ ...

  4. Codeforces Round #425 (Div. 2) Problem B Petya and Exam (Codeforces 832B) - 暴力

    It's hard times now. Today Petya needs to score 100 points on Informatics exam. The tasks seem easy ...

  5. 【Codeforces Round #432 (Div. 1) B】Arpa and a list of numbers

    [链接]h在这里写链接 [题意] 定义bad list是一个非空的.最大公约数为1的序列.给定一个序列,有两种操作:花费x将一个元素删除.花费y将一个元素加1,问你将这个序列变为good list所需 ...

  6. 【Codeforces Round #420 (Div. 2) C】Okabe and Boxes

    [题目链接]:http://codeforces.com/contest/821/problem/C [题意] 给你2*n个操作; 包括把1..n中的某一个数压入栈顶,以及把栈顶元素弹出; 保证压入和 ...

  7. 【Codeforces Round #420 (Div. 2) B】Okabe and Banana Trees

    [题目链接]:http://codeforces.com/contest/821/problem/B [题意] 当(x,y)这个坐标中,x和y都为整数的时候; 这个坐标上会有x+y根香蕉; 然后给你一 ...

  8. 【Codeforces Round #420 (Div. 2) A】Okabe and Future Gadget Laboratory

    [题目链接]:http://codeforces.com/contest/821/problem/A [题意] 给你一个n*n的数组; 然后问你,是不是每个位置(x,y); 都能找到一个同一行的元素q ...

  9. 【Codeforces Round #423 (Div. 2) C】String Reconstruction

    [Link]:http://codeforces.com/contest/828/problem/C [Description] 让你猜一个字符串原来是什么; 你知道这个字符串的n个子串; 且知道第i ...

随机推荐

  1. RabbitMQserver配置文件

    RabbitMQ的server配置设置.我做了改动,改动例如以下: {tcp_listeners, [5672]}, {loopback_users, ["elite"]} 其他的 ...

  2. ubuntu,jdk安装成功后,点击eclipse,提示信息A Java RunTime Environment (JRE) or Java Development Kit (JDK)

    A Java RunTime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Ecl ...

  3. visual studio code(vscode)的使用(快捷键)

    Visual Studio Code初探 vscode 是一种可运行于 OS X,Windows 和 Linux 之上的免费跨平台编辑器: 1. 快捷键 ctrl + `:调出(对于 windows ...

  4. Lambda表达式-使用说明

    jdk8已经发布4年,其中有一个特性:Lambda,它是一个令开发者便捷开发的一种方式,Lambda Expression (Lambda表达式)是为了让java提供一种面向函数编程,原本在jdk8之 ...

  5. SQL Server单表已700w+将普通表转换成分区表1

    最近项目中,某个表数据量爆发时增长,单表已700w+,读写性能急剧下降,所以考虑加入分区表以解燃眉之急,后续还是要分表分库,当然这是后话.下面简要说一下将普通表转为分区表的步骤.   一.创建文件组 ...

  6. rest_framework-节流-总结完结篇

    列表从后往前读 #1.在request中获取IP#2.访问记录 VISIT_RECORD = {} 放缓存 数据库 都可以 建议缓存import timeclass VisitThrottle(obj ...

  7. json数据字典,以及数据在下拉框中显示

    建立person_vocation.json数据字典文件,内容: [ {"id":1,"disabled":false,"selected" ...

  8. SVN在vs2013中使用

    http://download.csdn.net/download/show_594/9112963 内包含VisualSVN 5.0.1的官方原版安装包及破解文件VisualSVN.Core.L.d ...

  9. sql 知识点

    1 聚集索引和非聚集索引的区别 聚集索引是指 表中存储的数据按照索引的顺序来存储,数据检索效率高,但是对数据更新影响较大:非聚集索引是数据存储在一个地方,索引存储在另一个地方:索引带有指针,指向数据的 ...

  10. 包及常用模块(time、datetime、random、sys)

    什么是包?‘ #官网解释 Packages are a way of structuring Python’s module namespace by using “dotted module nam ...