zoukankan      html  css  js  c++  java
  • 电子科技大学实验中学PK赛(三)-期末测试比赛题解

    比赛地址:http://qscoj.cn/contest/33/

    A题 国家德比

    分析:用b,d,B,D记录两场比赛两支球队的比分,先判断b+B与d+D的大小,如果先者大则拜仁胜,后者大则多特胜;相同再判断B与d的大小,前者大拜仁胜,后者大多特胜,相同则加时。

    标程:

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int b,d,B,D;
        cin>>b>>d;
        cin>>B>>D;
        if (b+B>d+D) cout<<"FC Bayern Munich"<<endl;
        if (b+B<d+D) cout<<"Borussia Dortmund"<<endl;
        if (b+B==d+D)
        {
            if (B>d) cout<<"FC Bayern Munich"<<endl;
            if (B<d) cout<<"Borussia Dortmund"<<endl;
            if (B==d) cout<<"Overtime"<<endl;
        }
        return 0;
    }

    B题 圆圈统计

    分析:一共27个韩文字,只需一个个数出每个韩文字圆圈数量存在一个数组a中,将三十六进制数转化为十进制,再从a[l]累加到a[r]就行。

    标程:

    #include<bits/stdc++.h>
    using namespace std;
    int a[28]={0,1,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,2,1,1,1,0,0,1,1,1,1};
    int main()
    {
        string s1,s2;
        int l,r,i,ans;
        cin>>s1>>s2;ans=0;
        if (s1[0]<=57) l=s1[0]-48;
        else l=s1[0]-55;
        if (s2[0]<=57) r=s2[0]-48;
        else r=s2[0]-55;
        for(i=l;i<=r;i++)
            ans+=a[i];
        cout<<ans<<endl;
        return 0;
    }

    C题 飞镖游戏

    分析:通过题意可以分析出,最后一镖能投的分数为2-40的偶数和50,之前的每镖能投的分数为1-20,2-40的偶数,3-60中3的倍数,25,50。所以把这些能投中的分数放在一个vector数组中,倒回去DP。先把所有dp值赋为-1,把2-40和50的dp值赋为1;之后再依次更新下一步能投中的分数总和,dp[i]=min(dp[i-v[j]])+1;v[j]为1镖能投中的分数。注意x为1时无论如何都无法达到该分数,则应输出-1.

    标程:

    #include<bits/stdc++.h>
    using namespace std;
    int dp[510];
    vector<int> v;
    int main()
    {
        int x,i,j,k,minx;
        bool flag;
        cin>>x;
        memset(dp,-1,sizeof(dp));
        for(i=1;i<=20;i++)
        {
            v.push_back(i);
            v.push_back(2*i);
            v.push_back(3*i);
        }
        v.push_back(25);
        v.push_back(50);
        for(i=1;i<=20;i++)
            dp[2*i]=1;
        dp[50]=-1;flag=true;
        while(flag)
        {
            flag=false;
            for(i=2;i<=501;i++)
            {
                if (dp[i]!=-1) continue;
                flag=true;minx=0x3f3f3f3f;
                for(j=0;j<v.size();j++)
                {
                    k=i-v[j];
                    if (k>=2 && dp[k]!=-1) minx=min(minx,dp[k]);
                }
                dp[i]=minx+1;
            }
        }
        cout<<dp[x]<<endl;
        return 0;
    }
  • 相关阅读:
    <<一线架构师实践指南>>读书笔记之二PA阶段
    【读书笔记】简约至上交互设计四策略第4章 删除
    大数据量简单数据查询设计思考
    识别项目干系人
    【读书笔记】简约至上交互设计四策略第3章 简约四策略
    【读书笔记】简约至上交互设计四策略第2章 明确认识
    【读书笔记】简约至上交互设计四策略第1章 话说简单
    采购管理计划
    项目管理整体的一些基本概念1
    【读书笔记】简约至上交互设计四策略第5章 组织
  • 原文地址:https://www.cnblogs.com/cs-lyj1997/p/6919234.html
Copyright © 2011-2022 走看看