zoukankan      html  css  js  c++  java
  • Codeforces Round #619 (Div. 2) 题解

    A. Three Strings

    #include<iostream>
    #include<algorithm> 
    using namespace std;
    int main(){
        int t;
        scanf("%d",&t);
        while(t--){
            string a,b,c;
            cin>>a>>b>>c;
            int flag=1;
            for(int i=0;i<a.length();i++){
                if(a[i]==b[i] && b[i]==c[i]) continue;
                else if(a[i]==c[i]) continue;
                else if(b[i]==c[i]) continue;
                else {
                    flag=0;break;
                }
            }
            if(flag==1) cout<<"YES
    ";
            else cout<<"NO
    ";
        }
    }

    B. Motarack's Birthday

    思路:找到在-1附近(不包括-1)数值的最大最小值,然后K=(max+min)/2,最后将k代回数组统计一下相邻的最大值即可

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #define inf 0x3f3f3f3f
     using namespace std;
     typedef long long ll;
     const int maxn=2e5+10;
     ll a[maxn];
     int main()
     {
         int x,n;
         cin>>x;
         while(x--){
             scanf("%d",&n);
             for(int i=0;i<=2*n;i++) a[i]=0;
             for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
            ll mx=-inf,mi=inf;
            for(int i=1;i<=n;i++){
                if(a[i]==-1) continue;
                if(a[i-1]==-1||a[i+1]==-1){
                    mx=max(a[i],mx);
                    mi=min(a[i],mi);
                }
            }
            if(mx==-inf&&mi==inf){
                cout<<"0 1"<<endl;
                continue;
            }    
            ll k=(mx+mi)/2;
            mx=-inf;
            for(int i=2;i<=n;i++){
                ll x=a[i],y=a[i-1];
                if(x==-1) x=k;
                if(y==-1) y=k;
                mx=max(abs(x-y),mx);
            }
            cout<<mx<<" "<<k<<endl;
         }
        return 0;
     }

    C. Ayoub's function

    思路:直接推出公式 (n*(n+1))/2 - [k*(k+1)/2]*g - (k+1)*(z mod g)  ,其中z = (n-m) , g=m+1, k = z/g (向下取整)

    #include<iostream>
    #include<algorithm>
     using namespace std;
     typedef long long ll;
     int main()
     {
         ll n,m,x,y,c,t;
         int k;
         cin>>k;
         while(k--){
             scanf("%lld%lld",&n,&m);
             t=n;
             n-=m;
             m++;
             x=n/m;
             y=n%m;
             c=m-y;
             cout<<t*(t+1)/2-x*(x+1)*c/2-(x+1)*(x+2)*y/2<<endl;
        }
         return 0;
     }

    D. Time to Run

    思路:可以发现通过合适的方法,我们可以将所有边都走遍,那么这个方法就是先不停向右再不停向左然后向下直到走到最后一行的最右边,然后开始向上走再向下走再向左走就可以将整张图走完

    比较复杂的就是如何记录路径,可以开一个vector里面存放的是pair<int x,char ch>,分别是重复的次数与方向

    之后再不停答案存到另一个vector中,然后累计x直到k位置就跳出,最后再输出即可

    #include<iostream>
    #include<algorithm>
    #include<vector>
     using namespace std;
     vector<pair<int,char> > a,ans;
     int n,m,k;
     void inse(int x,char ch)
     {
         if(x>0) a.push_back({x,ch});
     }
     inline void insertt(int x, char c) {
        if (x > 0) { ans.push_back({x, c}); }
     }
     bool solve() {
        for (auto i : a) {
            insertt(std::min(i.first, k), i.second);
            k -= std::min(i.first, k);
        }
        return k <= 0;
     }
     int main()
     {
         scanf("%d%d%d",&n,&m,&k);
         for(int i=1;i<n;i++){
             inse(m-1,'R');
             inse(m-1,'L');
             inse(1,'D');
         }
         inse(m-1,'R');
        for(int i=1;i<m;i++){
            inse(n-1,'U');
            inse(n-1,'D');
            inse(1,'L');
        }
        inse(n-1,'U');
        if(!solve()) cout<<"NO"<<endl;
        else{
            cout<<"YES"<<endl;
            cout<<ans.size()<<endl;
            for (auto i : ans) printf("%d %c
    ", i.first, i.second);
        }
        return 0;
     }
  • 相关阅读:
    51 Nod 1013 3的幂的和 矩阵链乘法||逆元+快速幂
    poj3580 序列之王 fhqtreap
    bzoj1503: [NOI2004]郁闷的出纳员 fhqtreap版
    bzoj1251: 序列终结者 fhqtreap写法
    bzoj4864: [BeiJing 2017 Wc]神秘物质
    bzoj3786 星际探索 splay dfs序
    bzoj1861 书架 splay版
    bzoj1503 郁闷的出纳员 splay版
    网络转载:局域网安全:解决ARP攻击的方法和原理
    黑客的故事
  • 原文地址:https://www.cnblogs.com/overrate-wsj/p/12308192.html
Copyright © 2011-2022 走看看