【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. 11.怎样自学Struts2之Struts2验证[视频]

    11.怎样自学Struts2之Struts2验证[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: http://pan. ...

  2. angularjs 遍历

    <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...

  3. DGA特征挖掘

    摘自:https://paper.seebug.org/papers/Archive/drops2/%E7%94%A8%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%A ...

  4. P3227 [HNOI2013]切糕

    题目描述 经过千辛万苦小 A 得到了一块切糕,切糕的形状是长方体,小 A 打算拦腰将切糕切成两半分给小 B.出于美观考虑,小 A 希望切面能尽量光滑且和谐.于是她找到你,希望你能帮她找出最好的切割方案 ...

  5. 离奇失踪的WM_HOTKEY消息--浅析WIN32消息队列

    故事的开端有些平淡,眼红于XXX小程序,认为写完该程序就有了和心仪的妹子多相处的机会,必须搞,必须酷,按钮不能有,界面得隐藏,这就想到了全局快捷键. 注册调用RegisterHotKey(m_hWnd ...

  6. BootStrap--panel面板

    1 <div class="panel panel-default"> <div class="panel-body"> 这是一个基本的 ...

  7. mongodb 的查询深入剖析

           db.表名.find({goods_id:3});                     //查询出 goods_id 为 3 的数据        db.表名.find({cat_i ...

  8. d3碰撞源码分析

    技术 d3. d3.force.d3.geom.quadtree. d3.geom.quadtree 四叉树的应用:图像处理.空间数据索引.2D中的快速碰撞检测.存储稀疏数据等,游戏编程. 上图中的数 ...

  9. navigator.mediaDevices.getUserMedia

    navigator.mediaDevices.getUserMedia: 作用:为用户提供直接连接摄像头.麦克风的硬件设备的接口 语法: navigator.mediaDevices.getUserM ...

  10. 紫书 例题 10-27 UVa 10214(欧拉函数)

    只看一个象限简化问题,最后答案乘4+4 象限里面枚举x, 在当前这条固定的平行于y轴的直线中 分成长度为x的一段段.符合题目要求的点gcd(x,y) = 1 那么第一段1<= y <= x ...