首页 > 其他分享 >codeforces 1931E

codeforces 1931E

时间:2024-03-17 17:11:45浏览次数:34  
标签:10 1931E 数字 int sum codeforces while cnt

题目链接
简介:对一些数字,余念安可以反转一个数字,齐夏将两个数字首尾相连变为一个数字。每个人都采取最优策略。
名单上只剩下一个号码。如果该整数不小于  10的m次方 ,则齐夏获胜。否则余念安就赢了。

分析 :博弈论问题,结局已经确定,可知 变成了位数个数之争,齐夏要通过合并数字使得位数个数不会减小,余念安要通过反转数字(得到前导零)减小位数个数。

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

int qu(ll x)

{

    int cnt=0;

    while(x)

    {

        x/=10;

        cnt++;

    }

    return cnt;

}

vector<int>a;

void du(ll x)

{

    int cnt=0;

    while(x%10==0)

    {cnt++;x/=10;}

    a.push_back(cnt);

}

int n,m;

void solve()

{

    a.clear();

   cin>>n>>m;

   int sum=0;

   for(int i=0;i<n;i++) {

    ll d; cin>>d;

    sum+=qu(d);

    du(d);

   }

   sort(a.begin(),a.end());

   int k=0;

   for(int i=n-1;i>=0;i--)

   {

    if(k==0)

    sum-=a[i],k=1;

    else

    if(k) k=0;

   }

   if(sum>m) cout<<"Sasha"<<"\n";

   else cout<<"Anna"<<"\n";

}

int main()

{

    int t;cin>>t;

    while(t--)

    {

        solve();

    }

    return 0;

}

标签:10,1931E,数字,int,sum,codeforces,while,cnt
From: https://www.cnblogs.com/eehaofu/p/18078787

相关文章

  • Codeforces Round 934 (Div. 1)
    Preface真是一场酣畅淋漓的掉分啊,一场回到解放前了属于是这把虽然有不可抗力的原因(电脑半路蓝屏了),但不知道为什么状态就特别差A刚开始没清空干净WA了2发后就心态崩了,然后加上头疼难耐B题也没看出关键trick直接写了个不仅错还巨难写的东西不过yysy这场Guess的成分是否有点太高......
  • 每日一题 第七期 Codeforces Round 929 (Div. 3) Editorial
    TurtleTenacity:ContinualModsD.TurtleTenacity:ContinualModstimelimitpertest:2secondsmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputGivenanarraya......
  • Codeforces Round 934 (Div. 2)
    CodeforcesRound934(Div.2)A-DestroyingBridges解题思路:完全图每个点的连边数为\(n-1\)。\(k<n-1\):都可到达。\(k\geqn-1\):将点\(1\)的边删完,只能呆在点\(1\)。代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;usingpii=......
  • Codeforces Round 908 (Div. 2)
    CodeforcesRound908(Div.2)A-SecretSport解题思路:有一说一,没看很懂,感觉最后赢的就是赢了。。。代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;usingpii=pair<ll,ll>;#definefifirst#definesesecondusingpiii=pair<ll,pa......
  • Codeforces 1948G MST with Matching
    因为贡献是两个之和,考虑固定下一个,求解另一个的最优。\(\text{MST}\)似乎找不到什么好的办法固定,便考虑固定下最大匹配。对于树的最大匹配,考虑到因为树也是二分图,所以树的最大匹配\(=\)最小点覆盖。考虑如果知道了最小点覆盖内的点,那就说明如果一条边两个端点都不在点集中,是......
  • Educational Codeforces Round 163 A-E
    A.SpecialCharacters构造。形如\(A\)和\(B\)这类单个字符构成的字符串对答案的贡献为\(0\),而\(AA\)和\(AAAA\)这类多个相同字符构成的字符串对答案的贡献固定为\(2\)​,则无法构造出奇数值,由第二类字符串拼接即可构造出偶数值。时间复杂度:\(O(n)\)。#include<bit......
  • Codeforces 1948E Clique Partition
    考虑到有\(|i-j|\),所以肯定是让相邻的一部分在一个团里。考虑构造出一个最长长度的,后面类似复制几遍即可。考虑到\(|k-1|=k-1\),且因为\(a_i\)为一个排列,差的绝对值至少为\(1\),所以只考虑两端最长长度也只可能为\(k\)。不妨先假设最长长度为\(k\)来构造。那么......
  • Codeforces-1005C
    https://codeforces.com/problemset/problem/1005/C一、代码目录#include<bits/stdc++.h>usingnamespacestd;voidsolve(){inta[122222],n,ans=0;map<int,int>m;scanf("%d",&n);for(inti=0;i<n;i++){......
  • Educational Codeforces Round 163 (Rated for Div. 2)
    EducationalCodeforcesRound163(RatedforDiv.2)A-SpecialCharacters解题思路:一个相同的连续段会贡献两个特殊字符,所以答案一定是偶数,找个不同的数分隔开即可。代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;usingpii=pair<ll,ll......
  • Codeforces Round 933 (Div. 3)赛后总结
    CodeforcesRound933(Div.3)B从边缘开始计算,因为边缘肯定只能一个一个减,就可以遍历得到答案.代码C只要对mapie特判,然后判断map和pie的个数就是答案了。D(记忆化搜索)可以通过二维数组来标记搜索状态,将已经出现过的状态直接返回,极大减少时间。#include<bits/stdc++.h>......