【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. linux线程间同步(1)读写锁

    读写锁比mutex有更高的适用性,能够多个线程同一时候占用读模式的读写锁.可是仅仅能一个线程占用写模式的读写锁. 1. 当读写锁是写加锁状态时,在这个锁被解锁之前,全部试图对这个锁加锁的线程都会被堵塞 ...

  2. HDOJ 4975 A simple Gaussian elimination problem.

    和HDOJ4888是一样的问题,最大流推断多解 1.把ISAP卡的根本出不来结果,仅仅能把全为0或者全为满流的给特判掉...... 2.在残量网络中找大于2的圈要用一种类似tarjian的方法从汇点開 ...

  3. zzulioj--1813--good string(模拟)

    1813: good string Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 93  Solved: 15 SubmitStatusWeb Boa ...

  4. hpuoj--校赛--与学妹滑雪(最短路+精度判断)

    问题 G: 感恩节KK专场--与学妹滑雪 时间限制: 1 Sec  内存限制: 128 MB 提交: 284  解决: 25 [提交][状态][讨论版] 题目描述 这周下的雪好大好大,不过这正和KK学 ...

  5. array_unique和array_flip 这两个函数的区别

    array_unique和array_flip 这两个函数的区别 标签(空格分隔): php array_unique 和 array_flip 验证 1 没有排序的数组 2 array_unique ...

  6. jqueryValidator自定义校验规则的一种方式(覆盖源码)

    1.自定义js文件:jqValid-extend.js 内容: function setDefaultValidate(){ $.extend(true, $.validator, { // 方法 m ...

  7. Java中MySQL事务处理举例

    实例(以sql语句中的insert语句为例) import java.sql.Connection; import java.sql.DriverManager; import java.sql.Pr ...

  8. Android EditText+ListPopupWindow实现可编辑的下拉列表

    使用场景 AutoCompleteEditText只有开始输入并且与输入的字符有匹配的时候才弹出下拉列表.Spinner的缺点是不可以编辑.所以本文介绍如何使用EditText+ListPopupWi ...

  9. NodeJS学习笔记 (27)实用工具模块-util(ok)

    debuglog(section) 很有用的调试方法.可以通过 util.debuglog(name) 来创建一个调试fn,这个fn的特点是,只有在运行程序时候,声明环境变量NODE_DEBUG=na ...

  10. apache(XAMPP)禁止IP访问的httpd-vhosts.conf设置

    httpd-vhosts.conf <virtualhost *:80> ServerName 123.123.123.123   ServerAlias 123.123.123.123  ...