• Codeforces Round #373 (Div. 2)


    第一题花的时间有点多

    A,注意考虑0,15的极端情况就好了,还有只有一个数的未知情况

    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cassert>
    #include<iomanip>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define pi acos(-1.0)
    #define ll long long
    #define mod 1000000007
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    
    const double g=10.0,eps=1e-7;
    const int N=100000+10,maxn=500+100,inf=0x3f3f3f;
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int n,a,b;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>b;
            if(i!=n)a=b;
        }
        if(n==1)
        {
            if(b==15)cout<<"DOWN"<<endl;
            else if(b==0)cout<<"UP"<<endl;
            else cout<<"-1"<<endl;
            return 0;
        }
        if(b==15)cout<<"DOWN"<<endl;
        else if(b==0)cout<<"UP"<<endl;
        else if(a>b)cout<<"DOWN"<<endl;
        else if(a<b)cout<<"UP"<<endl;
        return 0;
    }
    /*********************
    
    *********************/
    A

    B题wa的次数太多了导致排名上不去,每次错了之后一找到bug就马上改过来交,根本没有考虑清楚,所以总是死在罚时上

    先生产两个rb交替的字符串,如rbrbrb,brbrbr,然后挨个匹配记录r和b不同的次数,然后如果rb不同时为0,总是可以通过交换r,b来替代对r,b同时喷漆,这样就是最小的了

    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cassert>
    #include<iomanip>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define C 0.5772156649
    #define pi acos(-1.0)
    #define ll long long
    #define mod 1000000007
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    
    const double g=10.0,eps=1e-7;
    const int N=100000+10,maxn=1000000+10,inf=0x3f3f3f;
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int n;
        string s,p1="",p2="";
        cin>>n>>s;
        for(int i=0; i<n; i++)
        {
            if(i&1)p1+='b',p2+='r';
            else p1+='r',p2+='b';
        }
        int r1=0,b1=0,r2=0,b2=0;
        for(int i=0;i<n;i++)
        {
            if(s[i]!=p1[i])
            {
                if(s[i]=='r')r1++;
                else b1++;
            }
            if(s[i]!=p2[i])
            {
                if(s[i]=='r')r2++;
                else b2++;
            }
        }
       // cout<<p1<<" "<<p2<<endl;
       // cout<<r1<<" "<<b1<<" "<<r2<<" "<<b2<<endl;
        cout<<min(min(r1,b1)+abs(r1-b1),min(r2,b2)+abs(r2-b2))<<endl;
        return 0;
    }
    /********************
    5
    bbrbb
    ********************/
    B

    C题模拟,要注意几个极端情况(如999.5进位,199.5进位,和小数点的处理)

    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cassert>
    #include<iomanip>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define C 0.5772156649
    #define pi acos(-1.0)
    #define ll long long
    #define mod 1000000007
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    
    const double g=10.0,eps=1e-7;
    const int N=100000+10,maxn=1000000+10,inf=0x3f3f3f;
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int n,t,point=-1,fi=-1;
        string s;
        cin>>n>>t>>s;
        for(int i=0; i<n; i++)
        {
            if(s[i]=='.')point=i;
            if(point!=-1&&fi==-1&&s[i]!='.'&&s[i]>='5')fi=i;
        }
        if(fi==-1)
        {
            cout<<s<<endl;
            return 0;
        }
        s=s.substr(0,fi+1);
        int p=fi-1;
        while(p>=0&&s[p]=='4')p--;
        int k=fi-p-1;
        if(t>=k+1)
        {
            s=s.substr(0,p+1);
            if(s[s.size()-1]=='.')
            {
                s=s.substr(0,s.size()-1);
                s[s.size()-1]+=1;
             //   cout<<s<<endl;
                if(s[s.size()-1]==':')
                {
                    int q=s.size()-2;
                    s[q+1]='0';
                    while(q>=0&&s[q]=='9')s[q]='0',q--;
                    if(q>=0)s[q]++;
                    else s='1'+s;
                   // s='1'+s;
                }
            }
            else s[s.size()-1]++;
            cout<<s<<endl;
        }
        else if(t==k)
        {
            s=s.substr(0,p+1);
            s+='5';
            cout<<s<<endl;
            return 0;
        }
        else
        {
            s[fi-t]='5';
            s=s.substr(0,fi-t+1);
            cout<<s<<endl;
        }
        return 0;
    }
    /********************
    5 1
    199.5
    ********************/
    C
  • 相关阅读:
    HTTP协议
    Python学习--装饰器、列表生成式、生成器、map filter、json处理
    Python学习--多线程&多进程
    Python学习--发送邮件
    Python学习--异常处理
    【第五节】【Python学习】【configparser模块】
    【第一节】【shell脚本】【文件里的内容与变量中的内容大小写替换】
    【Python】【多线程多进程】
    【Selenium学习】【拖动滚动条】
    【Python】【异常的获取与处理】
  • 原文地址:https://www.cnblogs.com/acjiumeng/p/7389073.html
Copyright © 2020-2023  润新知