QFNU 10-09 19 Training

B - A Tide of Riverscape

 CodeForces - 989B

努力把可能不一样的变成不一样的,两种情况。两个一个为“.”,一个为“1”或“0”。第二种是都为“.”。

有这样的就可以不一样。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=1e5+10;

int main(){
    int n,m,flag=0;
    cin>>n>>m;
    string ss;
    cin>>ss;
//    cout<<ss<<endl;
    for(int i =0;i<ss.length()-m;i++){
        if(ss[i]!=ss[i+m]){
            if(ss[i]=='.')
                ss[i] = ('1'-ss[i+m]) +'0';
            else if(ss[i+m]=='.')
                ss[i+m] = ('1'-ss[i]) +'0';
            flag=1;
            break;
        }
        else if(ss[i]=='.'){
            ss[i]='1';
            ss[i+m]='0';
            flag=1;
            break;
        }
    } 
    if(flag){
        for(int i =0;i<ss.length();i++){
            if(ss[i]=='.')
                cout<<"0";
            else
                cout<<ss[i];
        }
        cout<<endl;
    }
    else{
        cout<<"No"<<endl;
    }
    
    
    return 0;
}

E - High School: Become Human

 CodeForces - 987B

数学能力太差了。。。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=1e5+10;

int main(){
    int x,y;
    double a,b;
    cin>>x>>y;
    a=y*log(x);
    b=x*log(y);
    if(x==y){
        cout<<"="<<endl;
        return 0;
    }
    if(a>b)
        cout<<">"<<endl;
    else if(a<b)
        cout<<"<"<<endl;
    else
        cout<<"="<<endl;
    
    
    
    return 0;
}

F - Three displays

 CodeForces - 987C

第一次是使用了一个三层for循环,直接超时。。。后来在wzd的教导下,想到1^(1+1)的做法。。。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=1e5+10;

ll n,a[3007],b[3007],c[3007],ans=0x7fffffff,flag=1;
int main(){
    cin>>n;
    for(int i =1;i<=n;i++)
        cin>>a[i];
    for(int i =1;i<=n;i++)
        cin>>b[i];    
//    fill(c,c+3010,ans);
    for(int i =2;i<=n-1;i++){
        int mmin1=0x7fffffff,mmin2=0x7fffffff;
        for(int j=i+1;j<=n;j++){
            if(a[j]>a[i]&&mmin1>b[i]+b[j]){
                mmin1=b[i]+b[j];
            }
        }
    //    cout<<mmin2<<endl;
        for(int j=i-1;j>=1;j--){
            if(a[j]<a[i]&&mmin2>mmin1+b[j]){
                mmin2=mmin1+b[j];
            }
        }
    //    cout<<mmin2<<endl;
        if(ans>mmin2)
            ans=mmin2;
        
    //    cout<<ans<<endl;
    }
    if(ans==0x7fffffff)
        cout<<"-1"<<endl;
    else
        cout<<ans<<endl;
    
    
    
    return 0;
}

 

posted @ 2020-10-12 21:48  Leviathan_Sei  阅读(88)  评论(0)    收藏  举报