这次是Div.1+Div.2,所以有7题。

因为时间较早,而且正好赶上训练,所以机房开黑做。

然而我们都只做了3题。:(。

链接

【A】声控解锁

题意:

Arkady的宠物狗Mu-mu有一只手机。它需要朝这个手机吠一个英文单词密码(两个字符长),手机才能解锁。

Mu-mu的仇敌,Kashtanka想要解锁Mu-mu的手机,但是它只会说一些两个字符长的英文单词。

它想要用某种顺序吠出若干个英文单词,使得手机能解锁。告诉Kashtanka它有没有可能做到这一点。

输入:

第一行一个两个字符长的字符串,表示密码。

第二行一个正整数\(n\;(1\leqslant n\leqslant100)\),表示Kashtanka会说的单词数量。

接下来\(n\)行,每行一个两个字符长的字符串,表示Kashtanka会的单词。

输出:

YES或NO表示是否能做到。

题解:

 #include<cstdio>
#include<set>
#include<algorithm>
#include<queue>
#include<map>
#define F(i,n) for(int i=1;i<=n;++i)
#define R(i,a,b) for(int i=a;i<=b;++i)
#define dF(i,n) for(int i=n;i>=1;--i)
#define IINF 999999999
using namespace std;
int n,Ans=;
char a[];
char st[][];
int h[],l[];
int main(){
scanf("%s",a);
scanf("%d",&n);
F(i,n){
scanf("%s",st[i]);
if(st[i][]==a[]&&st[i][]==a[]) Ans=;
h[st[i][]]=;
l[st[i][]]=;
}
if(h[a[]]&&l[a[]]) Ans=;
if(Ans==) puts("YES");
else puts("NO");
return ;
}

【B】和时间赛跑

题意:

你曾经有这样的经历吗?要出一套题,离比赛开始只有8小时了,可是你却一道题都没出。

Mr.江有过。但是他真的有一个很不可拒绝的借口:他面对着一个时空悖论,时间和空间互换了位置!

整个宇宙变成了一个巨大的钟表。时针、分针和秒针静静地躺在钟面上。时间静止了,钟表显示的时间是\(h\)时\(m\)分\(s\)秒。

Mr.江上次和教练谈话是\(t_{1}\)时,而比赛在\(t_{2}\)时开始。这意味着Mr.江需要从\(t_{1}\)指针移动到\(\t_{2}\)指针。

但Mr.江在空间上的移动,就意味着Mr.江在现实中的时间上的衰老。但是众所周知,Mr.江有无限的时间支配,所以我们不需要担心这个。

如果Mr.江的道路上有指针挡着,他就不能通过。当然,Mr.江可以顺时针或逆时针行走。

保证任意一个指针不在整时刻度上。

判断Mr.江能否成功准时举办比赛?(或者我们应该说“准空”?)

输入:

五个数\(h,m,s,t_{1},t_{2}\;(1\leqslant h\leqslant12,0\leqslant m,s\leqslant59,1\leqslant t_{1},t_{2}\leqslant12,t_{1}\neq t_{2})\)。

输出:

YES或NO表示能否从\(t_{1}\)到达\(t_{2}\)。

题解:

判断三个指针在不在\(t_{1},t_{2}\)的同一侧。

 #include<cstdio>
#include<set>
#include<algorithm>
#include<queue>
#include<map>
#define F(i,n) for(int i=1;i<=n;++i)
#define R(i,a,b) for(int i=a;i<=b;++i)
#define dF(i,n) for(int i=n;i>=1;--i)
#define IINF 999999999
using namespace std;
int h,m,s,t1,t2;
int h1,h2,h3;
int w1,w2,w3;
int main(){
scanf("%d%d%d%d%d",&h,&m,&s,&t1,&t2);
if(h==) h=;
if(t1==) t1=;
if(t2==) t2=;
h1=h*+m*+s;
h2=m*+s*;
h3=s*;
t1*=, t2*=;
// printf("%d %d %d %d %d\n",h1,h2,h3,t1,t2);
if(t1>t2) swap(t1,t2);
if(t1<=h1&&h1<=t2) w1=;
if(t1<=h2&&h2<=t2) w2=;
if(t1<=h3&&h3<=t2) w3=;
if(w1==w2&&w2==w3) puts("YES");
else puts("NO");
return ;
}

【C】资格预审赛

题意:

Snark和Phillip在为了将来的八强赛的资格预审赛做准备,他们的题库中有\(n\)道题,他们想从中选出一个非空子集,作为题目。

有\(k\)个队伍会参加比赛。有一些队伍已经知道了题库中的某些题。

为了让比赛对他们来说更有趣,每个队伍知道的题目最多占总题目中的一半。

判断Snark和Phillip能否出一套有趣的比赛。

输入:

第一行两个正整数\(n,k\;(1\leqslant n\leqslant10^{5},1\leqslant k\leqslant4)\),题库中题目总数和参加比赛的队伍数量。

接下来\(n\)行,每行\(k\)个整数,等于0或1。第\(i\)行的第\(j\)个数是1就表示第\(j\)队知道第\(i\)题,是0反之。

输出:

YES或NO表示能否出一套有趣的比赛。

题解:

可以证明,在队伍数量最多为4的情况下,最多选2道题就可以了。

举个例子,当选出4题时,可以成为有趣的比赛,那么选出其中两题,必定也可以成为有趣的比赛。

根据定义,最终题目所组成的矩阵每列最多只有两个1,而某列有两个1在某两题的位置上,就意味着这两题不能同时选出。

而只有4列,最多只有4对题不能同时选出,但是题目的组合有6对,所以至少能选出两种不同的题目组合满足要求。

当题目数量大于4或者等于3时,也是类似证法。

而选两题的时间是\(O(n^{2})\)的,不是很优秀,但是注意到,只有2^4=16种不同的题目,所以复杂度应该是16^2=256的。

#include<cstdio>
#include<set>
#include<algorithm>
#include<queue>
#include<map>
#define F(i,n) for(int i=1;i<=n;++i)5
#define R(i,a,b) for(int i=a;i<=b;++i)
#define dF(i,n) for(int i=n;i>=1;--i)
#define IINF 999999999
using namespace std;
int n,m;
int x[];
int a[];
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i){
for(int j=;j<=m;++j) scanf("%d",&x[j]);
a[x[]+x[]*+x[]*+x[]*]=;
}
if(a[]) {puts("YES"); return ;}
else{
for(int i=;i<;++i)
for(int j=;j<;++j){
if((i&j)==&&a[i]&&a[j]){
puts("YES");
return ;
}
}
}
puts("NO");
return ;
}

【D】巨大的字符串

题意:

有n(1<=n<=100)个01字符串,每个长度小于等于100。

共有m(1<=m<=100)个操作,操作为"x y",表示把第y个字符串接在第x个字符串后面,得到编号为总编号+1的新字符串,并询问这个字符串中最大的满足条件的k,使得所有k位的01字符串(共有2^k个)都是这个字符串的子串。

输入:

第一行,n。

接下来n行,每行一个01字符串,表示第i个字符串。

接下来一行,m。

接下来m行,每行2个正整数,xi和yi,表示第i个操作。

输出:

对于每个询问,输出对应的k。

题解:

可以证明,k大约是<=17的。

【codeforces】【比赛题解】#868 CF Round #438 (Div.1+Div.2)的更多相关文章

  1. 竞赛题解 - CF Round #524 Div.2

    CF Round #524 Div.2 - 竞赛题解 不容易CF有一场下午的比赛,开心的和一个神犇一起报了名 被虐爆--前两题水过去,第三题卡了好久,第四题毫无头绪QwQ Codeforces 传送门 ...

  2. Codeforces Round #438 (Div.1+Div.2) 总结

    本来兴致勃勃的想乘着这一次上紫,于是很早很早的到了机房 但是好像并没有什么用,反而rating-=47 Codeforces Round #438(Div.1+Div.2) 今天就这样匆匆的总结一下, ...

  3. Educational Codeforces Round 65 (Rated for Div. 2)题解

    Educational Codeforces Round 65 (Rated for Div. 2)题解 题目链接 A. Telephone Number 水题,代码如下: Code #include ...

  4. Educational Codeforces Round 53 (Rated for Div. 2) (前五题题解)

    这场比赛没有打,后来补了一下,第五题数位dp好不容易才搞出来(我太菜啊). 比赛传送门:http://codeforces.com/contest/1073 A. Diverse Substring ...

  5. Educational Codeforces Round 63 (Rated for Div. 2) 题解

    Educational Codeforces Round 63 (Rated for Div. 2)题解 题目链接 A. Reverse a Substring 给出一个字符串,现在可以对这个字符串进 ...

  6. Educational Codeforces Round 48 (Rated for Div. 2) CD题解

    Educational Codeforces Round 48 (Rated for Div. 2) C. Vasya And The Mushrooms 题目链接:https://codeforce ...

  7. Educational Codeforces Round 60 (Rated for Div. 2) 题解

    Educational Codeforces Round 60 (Rated for Div. 2) 题目链接:https://codeforces.com/contest/1117 A. Best ...

  8. Educational Codeforces Round 59 (Rated for Div. 2) DE题解

    Educational Codeforces Round 59 (Rated for Div. 2) D. Compression 题目链接:https://codeforces.com/contes ...

  9. Educational Codeforces Round 58 (Rated for Div. 2) 题解

    Educational Codeforces Round 58 (Rated for Div. 2)  题目总链接:https://codeforces.com/contest/1101 A. Min ...

随机推荐

  1. bzoj2302-Problem c

    题意 有 \(n\) 个人,从 1 到 \(i\) 编号.给每个人一个值 \(a_i\) ,他们会按编号从小到大进行如下操作:查看 \(a_i\) 有没有人,若没有就坐进去,否则查看 \(a_i+1\ ...

  2. BZOJ3277 串(后缀数组+二分答案+主席树)

    因为不会SAM,考虑SA.将所有串连起来并加分隔符,每次考虑计算以某个位置开始的子串有多少个合法. 对此首先二分答案,找到名次数组上的一个区间,那么只需要统计有多少个所给串在该区间内出现就可以了.这是 ...

  3. C 输入 & 输出——Day03

    当我们提到输入时,这意味着要向程序填充一些数据.输入可以是以文件的形式或从命令行中进行.C 语言提供了一系列内置的函数来读取给定的输入,并根据需要填充到程序中. 当我们提到输出时,这意味着要在屏幕上. ...

  4. ajax发送post请求遇到的坑

    前端小白的我. 用django-rest-framework写好了一个接口.如下,就接收两个字符串参数. 前端写了一个简单的提交post请求到这个接口,如下 浏览器提交请求后,一直提示 400 Bad ...

  5. python使用SMTP发送qq/sina邮件

    python使用qq邮箱(个人邮箱)发送邮件需开启qq邮箱的SMTP服务 在设置中开启pop3/SMTP服务,返回的密码就是之后代码中登录使用账户密码(在完整代码中标识了出来) 之后出现如下错误 sm ...

  6. svmrank 的误差惩罚因子c选择 经验

    C是一个由用户去指定的系数,表示对分错的点加入多少的惩罚,当C很大的时候,分错的点就会更少,但是过拟合的情况可能会比较严重,当C很小的时候,分错的点可能会很多,不过可能由此得到的模型也会不太正确,所以 ...

  7. 【刷题】BZOJ 1537 [POI2005]Aut- The Bus

    Description Byte City 的街道形成了一个标准的棋盘网络 – 他们要么是北南走向要么就是西东走向. 北南走向的路口从 1 到 n编号, 西东走向的路从1 到 m编号. 每个路口用两个 ...

  8. PHP-从零开始使用Solr搜索引擎服务(上)

    前言: 原文地址: http://www.cnblogs.com/JimmyBright/p/7156069.html 使用搜索引擎,我们常规的数据查询会快很多,还可以对关键词进行中文分词查询,返回一 ...

  9. 解题:JSOI 2008 Blue Mary的战略地图

    题面 这大概不算是从零开始的DP学习系列,这不是最大子矩形吗=.= 定义$dp[x][y][xx][yy]$表示第一张地图中右下角为$(x,y)$,第二张地图中右下角为$(xx,yy)$的最大公共子矩 ...

  10. [CQOI2016] 手机号码 (数位dp)

    link $solution:$ $10^{10} \leq L \leq R < 10^{11}$这个数据范围很容易想到数位$dp$. 依照题意模拟即可. #include<iostre ...