团队天梯赛(GLPT) 2016年天梯赛初赛题集

2016年天梯赛初赛题集

L1:

  1. 到底有多二

    #include
    using namespace std;
    string s;
    int cnt,flag=0;
    
    int main()
    {
        getline(cin,s);
        if(s[0]=='-')
        {
            for(int i=1;i<s.size();i++)
            {
                if(s[i]=='2') cnt++;
            }
            if((s[s.size()-1]-'0')%2==0) flag=1;
            double ans=cnt*1.0/(s.size()-1);
            if(flag)
            {
                printf("%.2f%%",ans*100*1.5*2);
            }
            else printf("%.2f%%",ans*100*1.5);
        }
        else 
        {
            for(int i=0;i<s.size();i++)
            {
                if(s[i]=='2') cnt++;
            }
            if((s[s.size()-1]-'0')%2==0) flag=1;
            double ans=cnt*1.0/(s.size());
            if(flag)
            {
                printf("%.2f%%",ans*100*2);
            }
            else printf("%.2f%%",ans*100);
        }
        return 0;
    }
    
  2. 大笨钟

    #include
    #include
    using namespace std;
    int hh,mm;
    char ch;
    
    int main()
    {
        cin>>hh>>ch>>mm;
        if(hh>12)
        {
            if(mm==0) for(int i=0;i<hh-12;i++) cout<<"Dang";
            else for(int i=0;i<hh+1-12;i++) cout<<"Dang";
        }
        else 
        {
            printf("Only %02d:%02d.  Too early to Dang.",hh,mm);
        }
    
        return 0;
    }
    
  3. 谁先倒

    #include
    using namespace std;
    int a,b,n;
    int x1,y1,x2,y2;
    
    int main()
    {
        cin>>a>>b;
        cin>>n;
        int cnta=a,cntb=b;
        while(n--)
        {
            cin>>x1>>y1>>x2>>y2;
            int temp=x1+x2;
            if(y1==x1+x2 && y2!=y1)
            {
                cnta--;
            }
            if(y2==x1+x2 && y1!=y2)
            {
                cntb--;
            }
            if(y1==y2) continue;
            if(cnta<0)
            {
                cout<<'A'<<endl;
                cout<<b-cntb<<endl;
                break;
            }
            if(cntb<0)
            {
                cout<<"B"<<endl;
                cout<<a-cnta<<endl;
                break;
            }
        }
    
    
        return 0;
    }
    
  4. 帅到没朋友

    stl set !!!

    #include
    #include
    using namespace std;
    int n,k,x,m,flag=0;
    set<int> a,ans;
    
    int main()
    {
        cin>>n;
        while(n--)
        {
            cin>>k;
            if(k>=2)
            {
                while(k--)
                {
                    cin>>x;
                    a.insert(x);
                }
            }
            else cin>>x;
        }
        cin>>m;
        while(m--)
        {
            cin>>x;
            if(a.find(x)==a.end() && ans.find(x)==ans.end())
            {
                if(flag) cout<<" ";
                flag=1;
                ans.insert(x);
                printf("%05d",x);
            }
        }
        if(!flag) cout<<"No one is handsome"<<endl;
    }
    
  5. 重要的话说三遍

    #include
    using namespace std;
    
    int main()
    {
    
        for(int i=0;i<3;i++)
        {
            cout<<"I'm gonna WIN!"<<endl;
        }
    
        return 0;
    }
    
  6. 奇偶分家

    #include
    using namespace std;
    int n,x,cnt;
    
    int main()
    {
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>x;
            if(x%2==0) cnt++;
        }
        cout<<n-cnt<<" "<<cnt<<endl;
    
        return 0;   
    }
    
  7. 输出GPLT

    #include
    using namespace std;
    int g=0,p=0,l=0,t=0;
    string s;
    
    int main()
    {
        getline(cin,s);
        for(int i=0;i<s.size();i++)
        {
            if(s[i]=='g' or s[i]=='G') g++;
            if(s[i]=='p' or s[i]=='P') p++;
            if(s[i]=='l' or s[i]=='L') l++;
            if(s[i]=='t' or s[i]=='T') t++;
        }
        while(g+p+l+t)
        {
            if(g)
            {
                cout<<"G";
                g--;
            }
            if(p)
            {
                cout<<"P";
                p--;
            }
            if(l)
            {
                cout<<"L";
                l--;
            }
            if(t)
            {
                cout<<"T";
                t--;
            }
        }
    
        return 0;
    }
    
  8. 后天

    #include
    using namespace std;
    int n;
    
    int main()
    {
        cin>>n;
        int ans=n+2;
        if(n==5) cout<<7;
        else cout<<ans%7;
        return 0;
    }
    

L2:

  1. 抢红包

    #include
    #include
    using namespace std;
    int n,k,id,p;
    
    struct node{
        int id,cnt;
        float res;
    }a[10001];
    
    
    int cmp(node x,node y)
    {
        if(x.res!=y.res) return x.res>y.res;
        else if(x.cnt!=y.cnt) return x.cnt>y.cnt;
        else return x.id<y.id;
    }
    
    int main()
    {
        cin>>n;
    
        for(int i=1;i<=n;i++)
        {
            a[i].id=i;
            cin>>k;
            for(int j=0;j<k;j++)
            {
                cin>>id>>p;
                a[i].res-=p;
                a[id].cnt++;
                a[id].res+=p;
            }
        }
    
        sort(a+1,a+n+1,cmp);
    
        for(int i=1;i<=n;i++)
        {
            printf("%d %.2f\n",a[i].id,a[i].res/100);
        }
    
    
        return 0;
    }
    
  2. 排座位

    经典的并查集 详细了解!!!

    #include
    using namespace std;
    int n,m,k,x1,x2,r;
    int g[101][101],fa[101];
    
    void init(int n)
    {
        for(int i=1;i<=n;i++) fa[i]=i;
    }
    
    int find(int x)
    {
        if(fa[x]==x) return x;
        else 
        {
            fa[x]=find(fa[x]);
            return fa[x];
        }
    }
    
    void merge(int i,int j)
    {
        fa[find(i)]=find(j);
    }
    
    
    int main()
    {
        cin>>n>>m>>k;
        init(n);
        while(m--)
        {
            cin>>x1>>x2>>r;
            if(r==1)
            {
                merge(x1,x2);
            }
            else
            {
                g[x1][x2]=1;
                g[x2][x1]=1;
            }
        }
    
        while(k--)
        {
            cin>>x1>>x2;
            if(find(x1)==find(x2) && !g[x1][x2] && !g[x2][x1]) cout<<"No problem"<<endl;
            if(find(x1)!=find(x2) && !g[x1][x2] && !g[x2][x1]) cout<<"OK"<<endl;
            if(find(x1)==find(x2) && g[x1][x2] && g[x2][x1]) cout<<"OK but..."<<endl;
            if(find(x1)!=find(x2) && g[x1][x2] && g[x2][x1]) cout<<"No way"<<endl;
        }
    
    
        return 0;
    }
    
  3. 玩转二叉树

    
    
  4. 关于堆的判断

    
    

L3:

AMCMER 该你们表演了。

  1. 天梯地图
  2. 喊山
  3. 长城

你可能感兴趣的:(#,团队天梯赛,dfs,printf,templates,算法)