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

Posted duxing201806

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Educational Codeforces Round 63 (Rated for Div. 2) B题相关的知识,希望对你有一定的参考价值。

题目网址:https://codeforc.es/contest/1155/problem/B

题目大意:有两个人A,B博弈,在一串数字中,A先取数,B后取数,最后剩11个数的时候停止,如果第一个数是8,则A胜,反之B胜

题解:取数到最后,只剩11个数,且,A如果要赢,第一个数是8,则A显然是要尽可能的先取前面的非8数,B要先去前面的8,按照这样的策略,只需考虑前面n -10个数取到最后是否有8即可,显然是判断8的数量和其他数的数量的大小即可。

技术图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=3e5+7;
 4 char s[maxn];
 5 int main()
 6 {
 7     int n,tot=0;
 8     cin>>n;
 9     scanf("%s",s+1);
10     for(int i=1;i<=n-10;i++) {
11         if(s[i]==8) tot++;
12         else tot--;
13     }
14     if(tot>0) printf("YES");
15     else printf("NO\n");
16     return 0;
17 } 
View Code

 

以上是关于Educational Codeforces Round 63 (Rated for Div. 2) B题的主要内容,如果未能解决你的问题,请参考以下文章

Educational Codeforces Round 7 A

Educational Codeforces Round 7

Educational Codeforces Round 90

Educational Codeforces Round 33

Codeforces Educational Codeforces Round 54 题解

Educational Codeforces Round 27