Codeforces Round #555 (Div. 3) (A,B,C1,C2,D,E,F)

题目链接:http://codeforces.com/contest/1157

第一题

#include<bits/stdc++.h>
using namespace std;

#define debug puts("YES");
#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)
#define ll long long

#define lrt int l,int r,int rt
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define root l,r,rt
#define mst(a,b) memset((a),(b),sizeof(a))
#define pii pair<int,int>
#define fi first
#define se second
#define mk(x,y) make_pair(x,y)
const int mod=1e9+7;
const int maxn=1e5+100;
const int ub=1e6;
ll powmod(ll x,ll y){ll t; for(t=1;y;y>>=1,x=x*x%mod) if(y&1) t=t*x%mod; return t;}
ll gcd(ll x,ll y){
    if(y==0) return x;
    return gcd(y,x%y);
}
map<int,int> mp;
int main(){
    int n;cin>>n;
    while(!mp[n]){
        mp[n]=1;
        n++;while(n%10==0) n/=10;
    }
    cout<<mp.size()<<"\n";
    return 0;
}

第二题

#include<bits/stdc++.h>
using namespace std;

#define debug puts("YES");
#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)
#define ll long long

#define lrt int l,int r,int rt
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define root l,r,rt
#define mst(a,b) memset((a),(b),sizeof(a))
#define pii pair<int,int>
#define fi first
#define se second
#define mk(x,y) make_pair(x,y)
const int mod=1e9+7;
const int maxn=1e5+100;
const int ub=1e6;
ll powmod(ll x,ll y){ll t; for(t=1;y;y>>=1,x=x*x%mod) if(y&1) t=t*x%mod; return t;}
ll gcd(ll x,ll y){
    if(y==0) return x;
    return gcd(y,x%y);
}
int v[20],flag=0;
string s;
int main(){
    int n;cin>>n;
    cin>>s;
    rep(i,1,10) cin>>v[i];
    rep(i,0,n){
        int num=s[i]-'0';
        if(flag){
            if(v[num]<num) break;
            else s[i]='0'+v[num];
        }else{
            if(v[num]>num){
                flag=1;
                s[i]='0'+v[num];
            }
        }
    }
    cout<<s<<"\n";
    return 0;
}

第三题,第四题

#include<bits/stdc++.h>
using namespace std;

#define debug puts("YES");
#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)
#define ll long long

#define lrt int l,int r,int rt
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define root l,r,rt
#define mst(a,b) memset((a),(b),sizeof(a))
#define pii pair<int,int>
#define fi first
#define se second
#define mk(x,y) make_pair(x,y)
const int mod=1e9+7;
const int maxn=2e5+100;
const int ub=1e6;
ll powmod(ll x,ll y){ll t; for(t=1;y;y>>=1,x=x*x%mod) if(y&1) t=t*x%mod; return t;}
ll gcd(ll x,ll y){
    if(y==0) return x;
    return gcd(y,x%y);
}
int n,a[maxn];
string ans="";
int l[maxn],r[maxn];
int ret=0;
int main(){
    ios::sync_with_stdio(false);
    cin>>n;rep(i,1,n+1) cin>>a[i];
    l[n]=1;
    for(int i=n-1;i>=1;i--)
        if(a[i]<a[i+1]) l[i]=l[i+1]+1;
        else l[i]=1;
    r[1]=1;
    rep(i,2,n+1)
        if(a[i-1]>a[i]) r[i]=r[i-1]+1;
        else r[i]=1; 
    int p=1,q=n,cnt=0;
    int cur=0;
    while(p<=q){
        if(a[p]>cur&&a[q]>cur){
            if(a[p]<a[q]){
                ans+='L',cur=a[p];
                p++,cnt++;
            }else if(a[p]>a[q]){
                ans+='R',cur=a[q];
                q--,cnt++;
            }else{
                if(l[p]<r[q]){
                    cnt+=r[q];
                    rep(i,0,r[q]) ans+='R';
                    break;
                }else{
                    cnt+=l[p];
                    rep(i,0,l[p]) ans+='L';
                    break;
                }
            }
        }else if(a[p]<=cur&&a[q]<=cur){
            break;
        }else if(a[p]>cur){
            ans+='L',cur=a[p];
            p++,cnt++;
        }else if(a[q]>cur){
            ans+='R',cur=a[q];
            q--,cnt++;
        }
    }
    cout<<cnt<<"\n"<<ans<<"\n"; 
    return 0;
}

第五题(构造)

#include<bits/stdc++.h>
using namespace std;

#define debug puts("YES");
#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)
#define ll long long

#define lrt int l,int r,int rt
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define root l,r,rt
#define mst(a,b) memset((a),(b),sizeof(a))
#define pii pair<int,int>
#define fi first
#define se second
#define mk(x,y) make_pair(x,y)
const int mod=1e9+7;
const int maxn=1e5+10;
const int maxm=1e6+100;
const int ub=1e6;
ll powmod(ll x,ll y){ll t; for(t=1;y;y>>=1,x=x*x%mod) if(y&1) t=t*x%mod; return t;}
ll gcd(ll x,ll y){return y?gcd(y,x%y):x;}
ll n,k,ans[maxn];
ll pre[maxm];
int main(){
    cin>>n>>k;
    n-=k*(k+1)/2;
    if(n<0) puts("NO");
    else{
        rep(i,1,k+1) ans[i]=i+n/k;
        n%=k;
        int flag=1;
        for(int i=k;i>=1&&n;i--){
            ll val=min(n,2LL*ans[i-1]-ans[i]);
            if(val==0) {flag=0;break;}
            ans[i]+=val,n-=val;
        }
        if(flag){
            puts("YES");
            rep(i,1,k+1) cout<<ans[i]<<" ";
        }
        else puts("NO");
    }
    /*
    pre[0]=0;
    rep(i,1,maxm) pre[i]=pre[i-1]+1;
    rep(i,1,maxm) pre[i]+=pre[i-1];
    cin>>n>>k;
    if(1LL*k*(k+1)/2>n) puts("NO");
    else{
        if(k==1) cout<<"YES\n"<<n;
        else{
            int idx=0;
            while(idx+k<maxm&&pre[idx+k]-pre[idx]<=n) idx++;
            rep(i,0,k){
                ans[i]=pre[idx+i]-pre[idx+i-1]; 
                n-=ans[i];
            }
            int r=k-1,flag=1;
            while(n){
                if(r==0) r=k-1;
                ll tmp=min(ans[r-1]*2-ans[r],n);
                if(tmp==0) {
                    cout<<ans[r-1]<<" "<<ans[r]<<endl;
                    flag=0;
                    break;
                }
                ans[r]+=tmp,n-=tmp;
                r--;
            }
            if(flag==0) puts("NO");
            else{
                puts("YES");
                rep(i,0,k) cout<<ans[i]<<" ";
            }
        }
    }*/
    return 0;
}

第六题(multiset)

#include<bits/stdc++.h>
using namespace std;

#define debug puts("YES");
#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)
#define ll long long

#define lrt int l,int r,int rt
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define root l,r,rt
#define mst(a,b) memset((a),(b),sizeof(a))
#define pii pair<int,int>
#define fi first
#define se second
#define mk(x,y) make_pair(x,y)
const int mod=1e9+7;
const int maxn=2e5+10;
const int ub=1e6;
ll powmod(ll x,ll y){ll t; for(t=1;y;y>>=1,x=x*x%mod) if(y&1) t=t*x%mod; return t;}
ll gcd(ll x,ll y){
    if(y==0) return x;
    return gcd(y,x%y);
}
int n,a[maxn],b[maxn];
multiset<int> st;
multiset<int>::iterator it;
int main(){
    cin>>n;
    rep(i,0,n) cin>>a[i];
    rep(i,0,n) cin>>b[i],st.insert(b[i]);
    rep(i,0,n){
        it=st.lower_bound(n-a[i]);
        if(it==st.end()) it=st.lower_bound(0);
        a[i]=(a[i]+(*it))%n;
        st.erase(it);
        cout<<a[i]<<" ";
    }
    return 0;   
}

 第七题(模拟)

#include<bits/stdc++.h>
using namespace std;

#define debug puts("YES");
#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)
#define ll long long

#define lrt int l,int r,int rt
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define root l,r,rt
#define mst(a,b) memset((a),(b),sizeof(a))
#define pii pair<int,int>
#define fi first
#define se second
#define mk(x,y) make_pair(x,y)
const int mod=1e9+7;
const int maxn=2e5+10;
const int ub=1e6;
ll powmod(ll x,ll y){ll t; for(t=1;y;y>>=1,x=x*x%mod) if(y&1) t=t*x%mod; return t;}
ll gcd(ll x,ll y){return y?gcd(y,x%y):x;}
int n,a[maxn],cnt[maxn],flag=0;
vector<pii> p,ret;
int main(){
    cin>>n;
    rep(i,0,n){
        int x;cin>>x;
        cnt[x]++;
    }
    int ans=0,cur=0;
    rep(i,1,maxn){
        if(cnt[i]==1){
            cur++;
            if(cur>ans){
                ans=cur;
                p.push_back(mk(i,1));
                ret=p;
            }
            cur=0,p.clear();
            cur++;p.push_back(mk(i,1));
        }else if(cnt[i]==0){
            if(cur>ans) ans=cur,ret=p;
            cur=0;
            if(p.size()) p.clear();
        }else{
            cur+=cnt[i];
            p.push_back(mk(i,cnt[i]));
        }
    }
    if(cur>ans){
        ans=cur,ret=p;
    }
    cout<<ans<<"\n";
    int tmp[maxn],l=0,r=ans+1;
    rep(i,0,ret.size()){
        rep(j,0,ret[i].se){
            flag^=1;
            if(flag) tmp[++l]=ret[i].fi;
            else tmp[--r]=ret[i].fi;
        }
    }
    rep(i,1,ans+1) cout<<tmp[i]<<" ";
    return 0;
}

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_37451344/article/details/89944333