大家好,我是challenged,我是一枚Acmer,一个蒟蒻,欢迎来到我的博客。之前考虑了好久,还是决定多写一写博客,不能整天浑浑噩噩的过着,老是一直刷题不总结是不行的。多总结才能获得更多。还有我会不定期的更新一些平时的学习新得和体会,请巨佬们多多指教。总之,欢迎各位大佬经常来逛逛。
昨晚的codeforces的一场比赛#438,我错过了时间没有去打,接下来只有去补题了。
题意:给一个长度为2的字符串s,然后判断是否能够通过n个字符串pi拼接从中截取某一段长度为2的字符串与原串s相匹配.
思路:遍历每个字符串,判断该字符串和原字符串是否相同,还有每个字符串的第一个字符和源字符串的第二个字符是否匹配,每个字符串的第二个字符和源字符串的第一个字符是否匹配,这样判断就好啦。
代码如下:
#include<bits/stdc++.h>
using namespace std;
char a[2],s,p;
char b[2];
int main()
{
int i,j,m,n,k;
cin>>a>>n;
int flag=0;
int flag1=0;
for(i=0; i<n; i++)
{
cin>>b;
if(strcmp(a,b)==0)
{
flag1=1;
flag=1;
}
if(b[0]==a[1])
flag=1;
if(b[1]==a[0])
flag1=1;
}
if(flag1&&flag)
{
cout<<"yes"<<endl;
}
else cout<<"no"<<endl;
return 0;
}
题意:给出现在时间h:m:s,判断能不能从t到k这个点。(题意可能有些不明,大家看链接上的英文就好)
题解:直接判断时针,分针,秒针是同时在[t,k)这个区间内或者同时不在。(注意:t,k要去判定大小)
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int i,j,n,m,k,s,t,h;
while(cin>>h>>m>>s>>k>>t)
{
int ans=0;
int k1=min(k,t);
int t1=max(k,t);
if(s>=k1*5&&s<t1*5) ans++;
//cout<<ans<<endl;
if(m>=k1*5&&m<t1*5) ans++;
//cout<<ans<<endl;
if(h>=k1&&h<t1) ans++;
//cout<<ans<<endl;
if(ans==0||ans==3)
cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
return 0;
}
先更新到这里吧,我先去补题去了。