zoukankan      html  css  js  c++  java
  • 【Codeforces】Round #491 (Div. 2) 总结

    【Codeforces】Round #491 (Div. 2) 总结


    这次尴尬了,D题fst,E没有做出来。。。。

    不过还好,rating只掉了30,总体来说比较不稳,下次加油


    A:If at first you don’t succeed…

    这里写图片描述
    这里写图片描述


    SB题,就是注意一下特判就好了,然后我一开始wa了三次。。。

    #include<bits/stdc++.h>
    using namespace std;
    int read(){
        int ans=0,w=1;char c=getchar();
        while(!isdigit(c)&&c!='-')c=getchar();
        if(c=='-')c=getchar(),w=-1;
        while(isdigit(c))ans=ans*10+c-'0',c=getchar();
        return ans*w;
    }
    int main(){
        int a=read(),b=read(),c=read(),d=read();
        if(a+b-c>=d||a>d||b>d||c>d||c>a||c>b){
            cout<<"-1";
        }else cout<<d-a-b+c;
        return 0;
    } 

    B:Getting an A

    这里写图片描述

    比较稳过的一题
    排序,从最小的一位开始贪心

    #include<bits/stdc++.h>
    using namespace std;
    int read(){
        int ans=0,w=1;char c=getchar();
        while(!isdigit(c)&&c!='-')c=getchar();
        if(c=='-')c=getchar(),w=-1;
        while(isdigit(c))ans=ans*10+c-'0',c=getchar();
        return ans*w;
    }
    double a[110];
    int n;
    int main(){
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>a[i];
        sort(a+1,a+n+1);
        double sum=0;
        for(int i=1;i<=n;i++)sum+=a[i];
        int ans=0;double minv=4.5*(double)n; 
        while(sum<minv){
            ans++;
            sum=sum-a[ans]+5;
        }
        cout<<ans;
        return 0;
    } 

    C:Candies

    这里写图片描述
    这里写图片描述

    虽然我也不知道复杂度是什么,但是二分+check可以稳过,只用枚举k然后暴力检查就好,一开始因为二分写挂T了,后面顺利AC

    #include<bits/stdc++.h>
    using namespace std;
    #define LL long long
    LL n;
    bool check(LL w,LL p){
        LL tmp=0,pic=p;
        while(pic>0){
            if(w>=pic){
                tmp+=pic;
                return tmp*2>=p;
            }
            tmp+=w;
            pic-=w;
            pic-=pic/10;
            if(tmp*2>=p)return 1;
        }
        return 0;
    }
    void solve(LL p){
        LL l=1,r=p,ans=0;
        while(l<=r){
            LL mid=(l+r)>>1;
            if(check(mid,p))r=mid-1,ans=mid;
            else l=mid+1;
        }
        cout<<ans<<endl;
    }
    int main(){
        cin>>n;
        solve(n);
        return 0;
    } 

    D:Bishwock

    这里写图片描述
    这里写图片描述

    DP很裸,就是需要注意一下当有连续三个位置(包含两个字符串)都是空的,可以放进两个

    000 -> XX + 0X = XXX
    000 -> X0 + XX = XXX

    #include<bits/stdc++.h>
    using namespace std;
    int f[110]={0};
    char c[2][110];
    int mx[4]={0,0,1,1};
    int my[4]={0,1,0,1};
    bool check(int pos,int id){
        for(int i=0;i<4;i++){
            if(i==id)continue;
            int nx=pos-mx[i],ny=1-my[i];
            if(c[ny][nx]=='X')return 0;
        }
        return 1;
    }
    bool emp(int pos){
        return c[0][pos]=='0'&&c[1][pos]=='0';
    }
    int main(){
        scanf("%s%s",c[0],c[1]);
        int n=strlen(c[0]);
        for(int i=1;i<n;i++){
            f[i]=f[i-1];
            for(int j=0;j<4;j++)
                if(check(i,j))f[i]=max(f[i],f[i-2]+1);
            if(i>=2&&emp(i)&&emp(i-1)&&emp(i-2))f[i]=max(f[i],f[i-3]+2); 
        }
        cout<<f[n-1];
        return 0;
    } 

    E:Bus Number

    这里写图片描述
    这里写图片描述


    F:Concise and clear

    这里写图片描述
    这里写图片描述

  • 相关阅读:
    ORA01157、01110问题解决
    [转]WebService 中Maximum request length exceeded. 产生错误的原因,以及解决方法.
    [转]oracle9 startup时 报错ORA00600: 参数: [kcratr1_lostwrt]
    [转]八个dos命令
    [转]如何让ActiveX OCX控件下载并自动更新
    ora12154错误
    [转]Oracle分页
    [转]客户端连接数据库报错,ORA12516: TNS: 监听程序无法找到匹配协议栈的可用句柄
    vue中使用on事件被覆盖
    移动端滑动插件
  • 原文地址:https://www.cnblogs.com/dream-maker-yk/p/9676370.html
Copyright © 2011-2022 走看看