AtCoder Beginner Contest 195 E. Lucky 7 Battle[通俗易懂]

AtCoder Beginner Contest 195 E. Lucky 7 Battle[通俗易懂]链接https://atcoder.jp/contests/abc195/tasks/abc195_e题意字符串SSS只包含数字,字符串XXX只包含A和T,字符串T是空串

AtCoder

链接

https://atcoder.jp/contests/abc195/tasks/abc195_e

题意

字符串 S S S 只包含数字,字符串 X X X 只包含 AT,字符串 T 是空串。

X i X_i XiA 时,Aoki 操作,否则 Takahashi 操作。

每次操作可将 0 0 0 S i S_i Si 放在 T T T 末尾。

如果 T T T 7 7 7 的倍数则 Takahashi 获胜,否则 Aoki 获胜。

思路

回合编号从 0 0 0 开始,总共 n n n 个回合。

d p i , j dp_{i,j} dpi,j 为当前为第 i i i 个回合,该回合之前余数为 j j j 时 Takahashi 是否能获胜。

若Takahashi 获胜, d p n , 0 = 1 dp_{n,0}=1 dpn,0=1,然后进行倒推:

  • X i = X_i= Xi=T d p i , j = d p i + 1 , ( j ∗ 10 + s i ) % 7 ∣ d p i + 1 , j ∗ 10 % 7 dp_{i,j}=dp_{i+1,(j*10+s_i)\%7}|dp_{i+1,j*10\%7} dpi,j=dpi+1,(j10+si)%7dpi+1,j10%7
    当前为第 i i i 回合且 Takahashi 操作,两种放置中有一种 Takahashi 能获胜即可。
  • X i = X_i= Xi=A d p i , j = d p i + 1 , ( j ∗ 10 + s i ) % 7 & d p i + 1 , j ∗ 10 % 7 dp_{i,j}=dp_{i+1,(j*10+s_i)\%7}\&dp_{i+1,j*10\%7} dpi,j=dpi+1,(j10+si)%7&dpi+1,j10%7
    当前为第 i i i 回合且 Aoki 操作,必须保证两种放置后 Takahashi 都能获胜。

最后只要判断 d p 0 , 0 dp_{0,0} dp0,0 是否为 1 1 1

代码

#include <bits/stdc++.h>
#define SZ(x) (int)(x).size()
#define ALL(x) (x).begin(),(x).end()
#define PB push_back
#define EB emplace_back
#define MP make_pair
#define FI first
#define SE second
using namespace std;
typedef double DB;
typedef long double LD;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;
typedef vector<int> VI;
typedef vector<PII> VPII;
// head
const int N=2e5+5;
int n,dp[N][7];
string s,x;
int main() { 
   
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin>>n>>s>>x;
    dp[n][0]=1;
    for(int i=n-1;~i;i--) { 
   
        for(int j=0;j<7;j++) { 
   
            int a=dp[i+1][(j*3+s[i]-'0')%7],b=dp[i+1][j*3%7];
            if(x[i]=='T') dp[i][j]=a|b;
            else dp[i][j]=a&b;
        }
    }
    cout<<(dp[0][0]?"Takahashi":"Aoki")<<'\n';
    return 0;
}

今天的文章AtCoder Beginner Contest 195 E. Lucky 7 Battle[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/63987.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注