E. Anna and the Valentine's Day Gift

原题链接

题解

游戏规则总结一句话:
安娜要尽可能删掉后导零(翻转),萨沙要尽可能保护后导零(连接),问剩余数字的位数能否达到 \(m+1\)

直接模拟即可,统计每个数后导零的长度, 然后按照安娜先手的规则求出能保留多少位后导零,最后判断长度

code

#include<bits/stdc++.h>
using namespace std;
inline void read(long long &x) {
    x = 0;
    long long flag = 1;
    char c = getchar();
    while(c < '0' || c > '9'){
        if(c == '-')flag = -1;
        c = getchar();
    }
    while(c >= '0' && c <= '9') {
        x = (x << 3) + (x << 1) + (c ^ 48);
        c = getchar();
    }
    x *= flag;
}

inline void write(long long x) {
    if(x < 0) {
        putchar('-');
        x = -x;
    }
    if(x > 9)
        write(x / 10);
    putchar(x % 10 + '0');
}

priority_queue<long long> q;
long long len=0;

void add(long long now) {
    long long cnt=0;
    while(now && now%10==0)
    {
        cnt++;
        now /= 10;
    }
    while(now)
    {
        len++;
        now/=10;
    }
    if(cnt) q.push(cnt);
}

int main() {
    long long t;
    read(t);
    while(t--) {
        long long n, m, x;
        read(n);
        read(m);
        for(long long i = 1; i <= n; i++) {
            read(x);
            add(x);
        }

        int k=0;
        while(!q.empty())
        {
            len+=q.top()*k;
            q.pop();
            k=1-k;
        }

        if(len>=m+1)puts("Sasha");
        else puts("Anna");
        len=0;
    }
    return 0;
}

posted @ 2024-02-19 19:26  纯粹的  阅读(44)  评论(0)    收藏  举报