zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 116 (CF1606)

    A

    2s

    Problem

    给一个'a','b'组成的字符串 (s) ,每次修改可以把某个'a'改成'b'或把'b'改成'a',要求修改尽量少的次数使得 (s) 中 "ab"和"ba"子串的出现次数相等。输出修改后的 (s)

    Solution

    (s) 可以看作由若干"aa...a"和"bb...b"拼接而成,若首尾都是'a'或都是'b'则"ab"和"ba"出现次数一定相同,否则需要把首位改成和末位相同的字母。

    Code

    cin>>s;
    s[0]=s[s.size()-1];
    cout<<s;
    

    B

    2s

    Problem

    (n) 台电脑,开始时只有第一台电脑上有文件。
    每秒钟可以使用数据线把两台电脑连起来(每台电脑只能插一条线),然后就可以把文件从一台电脑拷到另一台。但是只有 (k) 根线,也就是说至多同时拷 (k) 个文件。
    给定 (n,k) 问最少需要多少秒可以全拷上文件。

    Solution

    当有文件的电脑数量不超过 (k) 时,每秒钟乘 (2)
    当有文件的电脑数量超过 (k) 时,每秒钟加 (k)
    所以直接 (O(log k)) 模拟第一步,剩余的除以 (k) 上取整即可。

    C

    2s

    Problem

    有n种纸币,第i种的面额是 (10^{a_i}) (保证(a_1=0))
    f(s)表示 支付s元至少需要多少纸币(如有1元,10元,100元时,f(59)=14,因为最少5张10元 9张1元)
    给定(n,a_1~a_n,k),求最小的s使得(f(s)>k)
    ((0=a_1<a_2<⋯<a_nleq 9,1leq nleq 10,1leq kleq 10^9))

    Code

    #define int long long
    inline int maxx(int x){
        int r=1;
        for(int i=1;i<=x;++i) r*=10;
        return r-1;
    }
    signed main(){
        int T=read();
        while(T--){
            n=read();k=read();res=k+1;
            for(int i=1;i<=n;++i) a[i]=read();
            for(int i=1;i<n;++i) a[i]=a[i+1]-a[i];
            for(int i=1;i<n;++i){
                if(maxx(a[i])>=res){
                    ans[i]=res;
                    for(int j=i;j>=1;--j) printf("%lld",ans[j]);
                    printf("
    ");
                    goto nxt;
                }
                else{
                    ans[i]=maxx(a[i]);
                    res-=ans[i];
                }
            }
            printf("%lld",res);
            for(int j=1;j<n;++j) printf("%lld",ans[j]);
            printf("
    ");
            nxt:;
        }
    }
    

    D

    4s

    Problem

    一个n*m的矩阵
    你需要把每行涂上红/蓝(不能全红/全蓝)
    然后竖着从某两列间把矩阵切成左矩阵和右矩阵
    使得:左矩阵中 红数字比所有蓝数字大,右矩阵中 蓝数字比所有红数字大。
    如果存在 输出每行染色方式和切割方式,否则输出No
    (2leq n,m leq 5 imes 10^5,nmleq 10^6,1leq a_{i,j}leq 10^6)

    Solution

    每行按字典序排序。可以证明,染色时必然是前若干行蓝色,后若干行红色。
    维护一下前后缀最大最小值,然后枚举红蓝交界线和左右矩阵交界线的交点即可

    E

    3s

    Problem

    有n个英雄,初始血量(a_1~a_n)。每轮游戏中,每个人对其他所有人造成一点伤害,该轮结束后 血量小于等于0的英雄死亡。若最后仅剩一人则此人胜出。
    如3个人:3 2 5,第一轮变成1,0,3,第二轮变成0,0,2,所以第三个人胜出。
    如4个人:2,2,2,2,第一轮变成-1,-1,-1,-1,无人胜出
    给定n,x,已知每个人初始血量都是1~x的整数,求使得无人胜出的方案数%998244353

    Solution

    我们猜测: 无人胜出当且仅当存在两人血量相同。

    F

  • 相关阅读:
    机器不学习:如何处理数据中的「类别不平衡」?
    机器不学习:一种提升预测能力的方法-机器学习模型
    机器不学习:CNN 入门讲解1-什么是卷积
    机器不学习:浅析深度学习在实体识别和关系抽取中的应用
    机器不学习:用神经模块网络学习推理
    机器不学习:初识迁移学习
    机器不学习:一文彻底读懂智能对话系统
    跟随鼠标的div
    回到顶部的流畅滚动——scrollTop
    js学习小笔记
  • 原文地址:https://www.cnblogs.com/int-2147483648/p/15488179.html
Copyright © 2011-2022 走看看