zoukankan      html  css  js  c++  java
  • The 2018 ACM-ICPC Asia Qingdao Regional Contest

    The 2018 ACM-ICPC Asia Qingdao Regional Contest

    青岛总体来说只会3题

    C

    #include<bits/stdc++.h>
    using namespace std;
    #define maxn 3000005
    char a[maxn],b[maxn];
    int c[maxn],ll[maxn],rr[maxn];
    int main(){
       int t;
       cin>>t;
       while(t--){
          int n;
          scanf("%d",&n);
          scanf("%s",a);
          scanf("%s",b);
          for(int j=0;j<n;j++){
             if(a[j]!=b[j]){
                c[j]=1;
             }else c[j]=0;
          }
          int i=0;
          bool fa=0;
          for(int j=0;j<strlen(a);j++){
             //if(fa&&c[j]==1) continue;
             if(fa==1&&c[j]==0){
                rr[i-1]=j;
                fa=0;
             }else if(fa==0&&c[j]==1){
                ll[i]=j;
                i++;
                fa=1;
             }
          }
          if(c[n-1]==1) rr[i-1]=n-1;
          if(i==0){
              printf("%lld
    ",1LL*n*(n+1)/2);
          }else if(i==1){
              int k=rr[i-1]-ll[i-1]+1;
              long long ans=1LL*(k-1)*2+1LL*(n-k)*2;
              printf("%lld
    ",ans);
          }else if(i==2){
             printf("6
    ");
          }else{
            printf("0
    ");
          }
       }
       return 0;
    }

    E

    #include<bits/stdc++.h>
    using namespace std;
    #define maxn 200005
    #define LL long long
    LL a[maxn],b[maxn];
    LL n,m;
    bool fa(LL x){
      LL ans=0;
      for(int j=0;j<n;j++){
         if(x%a[j]==0){
            b[j]=x/a[j];
         }else{
            b[j]=x/a[j]+1;
         }
      }
      for(int j=0;j<n;j++){
         if(j==n-1&&b[j]<1) break;
         ans++;
         if(b[j]>1){
            ans+=(b[j]-1)*2;
            b[j+1]-=b[j]-1;
         }
         if(ans>m) return 0;
      }
      return 1;
    }
    int main(){
       int t;
       cin>>t;
       while(t--){
          scanf("%lld%lld",&n,&m);
          LL mx=0;
          for(int j=0;j<n;j++){
             scanf("%lld",&a[j]);
             mx=max(mx,a[j]);
          }
          LL l=0,r=mx*m;
          if(m==0) cout<<"0"<<endl;
          else{
    
             while(l<r){
               LL mid=(r+l)/2;
               if(fa(mid)) l=mid+1;
               else r=mid;
             }  
             printf("%lld
    ",max(1LL*0,l-1));
          }
        
       }
       return 0;
    }

    J

    #include<bits/stdc++.h>
    using namespace  std;
    typedef long long LL;
    const int maxn = 100010;
    int Min( int a , int b ){ return a<b?a:b; }
    int n,m,a[maxn];
    int main()
    {
        int T; scanf( "%d" , &T );
        for( int cas=1 ; cas<=T ; cas++ )
        {
            int cnt = 0,num = 0;
            scanf ( "%d%d" , &n , &m );
            for( int i=1 ; i<=n ; i++ )
            {
                int x; scanf( "%d" , &x );
                if ( x==0 )  cnt++;
                else  a[++num] = x;
            }
            if ( m==n ) printf( "Richman
    " );
            else if ( m<cnt ) printf( "Impossible
    " );
            else
            {
                LL ans = 0; int tmp = 2000000000;
                for( int i=1 ; i<=num ; i++ )
                {
                    if ( i<=m-cnt )  ans += a[i];
                    else tmp = Min( tmp , a[i] );
                }
                printf( "%lld
    " , ans+tmp-1 );
            }
        }
        return 0;
    }

    M

    #include<bits/stdc++.h>
    using namespace std;
    #define LL long long
    int fa[12]={1,0,0,0,1,0,1,0,2,1};
    int main(){
      int t;
      cin>>t;
      while(t--){
         int  n,z;
         scanf("%d%d",&n,&z);
         //cout<<"2"<<endl;
         while(1){
            if(n==1||n==0) break;
            if(z<=0) break;
             int i=0;
             int k=n;
             while(k>0){
                LL  ii=k%10;
                i+=fa[ii];
                k/=10;
             }
             n=i;
             z--;
    
         }
         if(z==0){
            printf("%d
    ",n);
         }else{
            if(z%2==0){
               printf("%d
    ",n);
            }else{
               printf("%d
    ",fa[n]);
            }
         }
      }
    }
  • 相关阅读:
    problem report: middle of linked list
    Partition List解题报告
    Reverse Linked List解题报告
    Remove Duplicates from Sorted List解题报告
    strStr解题报告
    各种编码之间的关系以及getBytes的使用
    jsp/servlet中的编码问题
    javabean+servlet+jsp实现分页
    ligerUI实现分页
    java实现的简单词法分析器
  • 原文地址:https://www.cnblogs.com/Dvelpro/p/9941973.html
Copyright © 2011-2022 走看看