Codeforces Round #438 (Div.1+Div.2) 总结
本来兴致勃勃的想乘着这一次上紫,于是很早很早的到了机房
但是好像并没有什么用,反而rating-=47
Codeforces Round #438(Div.1+Div.2)
今天就这样匆匆的总结一下,心情不好qaq
首先是 A.Bark to Unlock
启示:(1)不能直接把char数组进行比较!!!
(2)读题要读清,不能漏读条件!!!
1 #include<bits/stdc++.h> 2 using namespace std; 3 int bo[3][30],n; 4 string s,t; 5 int main(){ 6 cin>>s; 7 scanf("%d",&n); cin>>t; 8 bo[1][t[0]-'a']=1; bo[2][t[1]-'a']=1; 9 if (bo[1][s[0]-'a']&&bo[2][s[1]-'a']||bo[2][s[0]-'a']&&bo[1][s[1]-'a']){ 10 printf("YES"); return 0; 11 } 12 for (int i=2;i<=n;++i){ 13 cin>>t; 14 if (s==t){ 15 printf("YES"); return 0; 16 } 17 bo[1][t[0]-'a']=1; bo[2][t[1]-'a']=1; 18 if (bo[2][s[0]-'a']&&bo[1][s[1]-'a']){ 19 printf("YES"); return 0; 20 } 21 } 22 printf("NO"); 23 }
总之我的做法时先把时针,分针,秒针在秒意义下的位置,进行排序
然后把t1和t2也转化成相同状态,最后判断t1和t2分别在哪个位置
大概就是这样
1 #include<bits/stdc++.h> 2 using namespace std; 3 int h,m,s,t1,t2,s1,s2,s3,a1,a2; 4 int main(){ 5 cin>>h>>m>>s>>t1>>t2; 6 s1=3600*(h%12)+60*m+s; s2=720*m+12*s; s3=720*s; 7 a1=3600*(t1%12); a2=3600*(t2%12); 8 if(s1>s2)swap(s1,s2); if(s2>s3)swap(s2,s3); if(s1>s2)swap(s1,s2); 9 if(a1>a2)swap(a1,a2); bool bo=0; 10 if(s1<=a1&&a2<=s2|| s2<=a1&&a2<=s3)bo=1; 11 if(a2<=s1||a1>=s3)bo=1; if(a1<=s1&&a2>=s3)bo=1; 12 if(bo) puts("YES"); else puts("NO"); 13 }
最后只希望今天的CF我的rating不会掉吧,上紫我的水平可能还不够吧