• Educational Codeforces Round 9


    632A - Grandma Laura and Apples    20171126

    按照题意模拟即可

    #include<stdlib.h>
    #include<stdio.h>
    #include<math.h>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define LL long long
    LL n,p,h,k,f[41];
    int main()
    {
        scanf("%I64d%I64d",&n,&p);
        for(LL i=0;i<n;i++)
          {
          string s;cin>>s;
          f[n-i]=(s.size()>5);
          }
        for(LL i=1;i<=n;i++)k=k*2+f[i],h+=f[i];
        return printf("%I64d
    ",(2*k-h)*p/2),0;
    }
    View Code

    632B - Alice, Bob, Two Teams    20171126

    扫一遍,再扫一遍_(:з」∠)_

    #include<stdlib.h>
    #include<stdio.h>
    #include<math.h>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    long long n,p[500001],_,ans;
    string s;
    int main()
    {
        scanf("%I64d",&n);
        for(int i=1;i<=n;i++)
          scanf("%I64d",&p[i]);
        cin>>s;
        for(int i=1;i<=n;i++)
          _+=(s[i-1]=='B')*p[i],ans=_;
        for(int i=1;i<=n;i++)
          if(s[i-1]=='A')
            _+=p[i],ans=max(ans,_);
          else _-=p[i];
        _=0;
        for(int i=1;i<=n;i++)
          _+=(s[i-1]=='B')*p[i];
        for(int i=n;i>=1;i--)
          if(s[i-1]=='A')
            _+=p[i],ans=max(ans,_);
          else _-=p[i];
        return printf("%I64d
    ",ans),0;
    }
    View Code

    632C - The Smallest String Concatenation    20171126

    sort一下再输出就好了

    #include<stdlib.h>
    #include<stdio.h>
    #include<math.h>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    string s[50001];
    int n;
    bool cmp(string a,string b){return a+b<b+a;}
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
          cin>>s[i];
        sort(s+1,s+n+1,cmp);
        for(int i=1;i<=n;i++)
          cout<<s[i];
        return printf("
    "),0;
    }
    View Code

    632D - Longest Subsequence    20171126

    记录每个数字有多少个在(a)内的因数即可

    #include<stdlib.h>
    #include<stdio.h>
    #include<math.h>
    #define N 1000001
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,m,l=1,k,a[N],cnt[N];
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
          {
          scanf("%d",&a[i]);
          if(a[i]<=m)cnt[a[i]]++;
          }
        for(int i=m;i>=1;i--)
          if(cnt[i])
            for(int j=2*i;j<=m;j+=i)
              cnt[j]+=cnt[i];
        for(int i=1;i<=m;i++)
          if(k<cnt[i])
            k=cnt[i],l=i;
        printf("%d %d
    ",l,k);
        for(int i=1;i<=n;i++)
          if(l%a[i]==0)
            printf("%d ",i);
        return 0;
    }
    View Code

    632E - Thief in a Shop    20171126

    标解好像是FFT?

    事实上好像一通乱搞就过了?

    不知道怎么用语言描述我的做法,用心感受代码吧~

    #include<stdlib.h>
    #include<stdio.h>
    #include<math.h>
    #define N 1001
    #include<vector>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,k,x,m,mi=1000,a[N],f[N*N];
    vector<int>ans;
    int main()
    {
        scanf("%d%d",&n,&k);
        for(int i=1;i<=n;i++)
          scanf("%d",&x),a[x]=1,m=max(m,x),mi=min(mi,x);
        for(int i=1;i<N*N;i++)f[i]=k+1;
        for(int i=1;i<=m;i++)
          if(a[i])for(int j=i-mi;j<=m*k;j++)
            f[j]=min(f[j],f[j-i+mi]+1);
        for(int i=0;i<=m*k;i++)if(f[i]<=k)ans.push_back(i+mi*k);
        for(int i=0;i<ans.size();i++)
          printf("%d%c",ans[i],i==ans.size()-1?'
    ':' ');
        return 0;
    }
    View Code

    632F - Magic Matrix    20190312

    bitset大法好!!!

    #include<bits/stdc++.h>
    using namespace std;
    #define N 2501
    #define GG return printf("NOT MAGIC
    "),0
    bitset<N>f[N];
    int n,m,a[N][N];
    struct rua{int x,y,z;}w[N*N];
    bool cmp(rua x,rua y){return x.z>y.z;}
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
          for(int j=1;j<=n;j++)
            scanf("%d",&a[i][j]);
        for(int i=1;i<=n;i++)
          for(int j=1;j<=n;j++)
            if(a[i][j]!=a[j][i] || a[i][i])GG;
        for(int i=1;i<=n;i++)
          for(int j=i+1;j<=n;j++)
            w[++m]={i,j,a[i][j]};
        sort(w+1,w+m+1,cmp);
        for(int i=1;i<=m;)
          {
          int j=i;
          while(j<=m && w[j].z==w[i].z)
            f[w[j].x][w[j].y]=f[w[j].y][w[j].x]=1,j++;
          while(i<j){if((f[w[i].x]|f[w[i].y]).count()<n)GG;i++;}
          }
        return printf("MAGIC
    "),0;
    }
    View Code

    (就这样水掉了一轮_(:з」∠)_

  • 相关阅读:
    虚拟机centOs和主机ssh互连
    centos7 利用yum安装mysql8.0
    MySQL触发器trigger的使用
    VMware虚拟机优化
    VM tools的安装
    CentOS下tar包和rpm包的区别
    如何解决VMware-vmx.exe无法彻底删除的问题
    JVM结构及堆的划分
    MYSQL: set names utf8是什么意思?
    collate utf8_bin和uft-8_general_ci是什么意思?
  • 原文地址:https://www.cnblogs.com/DeaphetS/p/10648102.html
Copyright © 2020-2023  润新知