codeforces round 425 div2
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的更多相关文章
- Codeforces Round #539 div2
Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...
- 【前行】◇第3站◇ Codeforces Round #512 Div2
[第3站]Codeforces Round #512 Div2 第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间 Rating又掉了……但是没什么,比上一次好多了: ...
- Codeforces Round#320 Div2 解题报告
Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...
- Codeforces Round #564(div2)
Codeforces Round #564(div2) 本来以为是送分场,结果成了送命场. 菜是原罪 A SB题,上来读不懂题就交WA了一发,代码就不粘了 B 简单构造 很明显,\(n*n\)的矩阵可 ...
- Codeforces Round #361 div2
ProblemA(Codeforces Round 689A): 题意: 给一个手势, 问这个手势是否是唯一. 思路: 暴力, 模拟将这个手势上下左右移动一次看是否还在键盘上即可. 代码: #incl ...
- Codeforces Round #626 Div2 D,E
比赛链接: Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) D.Present 题意: 给定大 ...
- CodeForces Round 192 Div2
This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...
- Codeforces Round #359 div2
Problem_A(CodeForces 686A): 题意: \[ 有n个输入, +\space d_i代表冰淇淋数目增加d_i个, -\space d_i表示某个孩纸需要d_i个, 如果你现在手里 ...
- Codeforces Round #360 div2
Problem_A(CodeForces 688A): 题意: 有d天, n个人.如果这n个人同时出现, 那么你就赢不了他们所有的人, 除此之外, 你可以赢他们所有到场的人. 到场人数为0也算赢. 现 ...
随机推荐
- new Image的API
- JAVA基础之序列化与反序列化
序列化和反序列化: 把对象转化为字节序列的过程称为序列化: 把字节序列恢复为对象的过程称为对象的反序列化: 方法: Java.io.ObjectOutputStream代表对象的输出流,writeOb ...
- Mybatis转义字符
Mybatis的sql语句中需要用到'>'或者'<'时,不能直接使用. < < 小于号 > > 大于号 & & 和 ' ' 单引号 ...
- 【highlight.js】页面代码高亮插件
[highlight.js] 很多博客都支持页面插入各种语言的代码,而这些代码肯定是有高亮设置的.那么在我们自己的页面上如何进行代码高亮设置?有现成的这个highlight.js插件我们可以使用. h ...
- 企业必会技能 tomcat
企业必会技能 tomcat tomcat 一.什么是Tomcat? Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项 ...
- Aizu - 0531 Paint Color
白书例题,直接用书上的暴力压缩坐标是可以的,但是看了别人的博客的写法,大概是理解了思想但是看不懂为什么那么压缩,先放这,等明白了补上 #define debug #include<stdio.h ...
- poj2991 Crane(线段树+集合)白书例题
题目大意:起重机有n节,题目给出要调节的k节,每节调节成x度,求最后底部的起重机的坐标(最顶上的起点为(0,0)). 分析:一开始我看白书,看不懂他那个向量旋转的坐标是怎么来的,翻了很多博客,才发现, ...
- gitignore忽略规则
我们用git提交本地代码时,有些文件或日志是不需要提交的,这个时候可以用.gitignore来解决这个问题: 首先,我们需要创建一个.gitignore文件,用命令输入 touch .gitignor ...
- C语言第九次作业
一.PTA实验作业 题目1:统计大于等于平均分人数 1. 本题PTA提交列表 2.设计思路 float i为循环变量,sum=0,count=0来表示所求人数 float *p=s来储存首地址 for ...
- JAVA的循环控制与循环嵌套
循环控制和循环嵌套 循环控制是除了循环条件之外,控制循环是否进行的一个机制,这给处理循环问题带来了灵活性.循环体内的语句块可以是顺序执行的语句,可以是分支结构的语句,也可以是循环语句,循环中含循环,就 ...