Monoxer Programming Contest 2024(AtCoder Beginner Contest 345)

Monoxer Programming Contest 2024(AtCoder Beginner Contest 345)

\(A\) Leftrightarrow \(100pts\)

  • 按照题意模拟即可。

    点击查看代码
    int main()
    {
        string s;
        int a=0,b=0,c=0,i;
        cin>>s;
        for(i=0;i<s.size();i++)
        {
            a+=(s[i]=='<');
            b+=(s[i]=='=');
            c+=(s[i]=='>');
        }
        if(a==1&&c==1)
        {
            cout<<"Yes"<<endl;
        }
        else
        {
            cout<<"No"<<endl;
        }
        return 0;
    }
    

\(B\) Integer Division Returns \(200pts\)

  • \(x<0\) 时,有 \(\left\lceil \frac{x}{10} \right\rceil\) 等价于 \(\frac{x}{10}\)\(0\) 取整。

  • \(x \ge 0\) 时,有 \(\left\lceil \frac{x}{10} \right\rceil= \left\lfloor \frac{x+10-1}{10} \right\rfloor\)

    • 直接使用 ceil(1.0*x/10) 会爆精度。
    点击查看代码
    int main()
    {
        ll x;
        cin>>x;
        if(x<0)
        {
            cout<<x/10<<endl;
        }
        else
        {
            cout<<(x+10-1)/10<<endl;
        }
        return 0;
    }
    

\(C\) One Time Swap \(350pts\)

  • 对于 \(S_{i}\) ,设 \(num_{S_{i}}\) 表示 \(S_{i+1 \sim n}\)\(S_{i}\) 出现的次数,则 \(S_{i}\) 对答案产生的贡献为 \(n-i-num_{S_{i}}\)

  • 注意原串在存在两个相同的元素的时候,也要统计在内。

    点击查看代码
    ll num[30];
    char s[1000010];
    ll val(char x)
    {
        return x-'a'+1;
    }
    int main()
    {
        ll n,ans=0,flag=0,i;
        scanf("%s",s+1);
        n=strlen(s+1);
        for(i=1;i<=n;i++)
        {
            flag|=(num[val(s[i])]!=0);
            num[val(s[i])]++;
        }
        for(i=1;i<=n;i++)
        {
            num[val(s[i])]--;
            ans+=n-i-num[val(s[i])];
        }
        cout<<ans+flag<<endl;
        return 0;
    }
    

\(D\) Tiling \(0pts\)

\(E\) Colorful Subsequence \(0pts\)

\(F\) Many Lamps \(0pts\)

\(G\) Sugoroku 5 \(0pts\)

总结

posted @ 2024-03-17 16:24  hzoi_Shadow  阅读(61)  评论(0编辑  收藏  举报
扩大
缩小