2018年天梯赛-全国总决赛(上)

简介: 算法

L1-1 天梯赛座位分配 (20 分)(待补)


题意:


天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情。为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位参赛选手。令每校选手排成一列纵队,第 i+1 队的选手排在第 i 队选手之后。从第 1 所学校开始,各校的第 1 位队员顺次入座,然后是各校的第 2 位队员…… 以此类推。如果最后只剩下 1 所学校的队伍还没有分配座位,则需要安排他们的队员隔位就坐。本题就要求你编写程序,自动为各校生成队员的座位号,从 1 开始编号。


思路:


代码:


L1-2 倒数第N个字符串 (15 分)


题意:


给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, ..., aaz, aba, abb, ..., abz, ..., zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。


思路:


正解的思路应该是先求字符串所有的种类数,再减去x,就能得到第x大的字符串然后使用26进制的转换,模拟时,我用暴力模拟不停的开个vector放字符串输出,会扣三分。


代码:

#include<bits/stdc++.h>
#include<unordered_map>
using namespace std;
int main()
{
    int l,r,i,x,j;
    cin>>l>>x;
    int d1=pow(26,l)-x;;
    string s1;
    vector<char >ans;
    while(d1!=0)
    {
        int x;
        x=d1%26;
        d1/=26;
        ans.push_back(x+'a');
    }
    reverse(ans.begin(),ans.end());
    for(auto x:ans) cout<<x;
    cout<<endl;
    return 0;
}


L1-3 打折 (5 分)


题意:


去商场淘打折商品时,计算打折以后的价钱是件颇费脑子的事情。例如原价 ¥988,标明打 7 折,则折扣价应该是 ¥988 x 70% = ¥691.60。本题就请你写个程序替客户计算折扣价。


思路:


简单题直接输出

#include<bits/stdc++.h>
using namespace std;
int main()
{
    double n,x;
    cin>>n>>x;
    cout<<fixed<<setprecision(2)<<(n*x*0.1)<<endl;
}

L1-4 2018我们要赢 (5 分)


题意:


2018年天梯赛的注册邀请码是“2018wmyy”,意思就是“2018我们要赢”。本题就请你用汉语拼音输出这句话。


思路:

直接输出即可


代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    cout<<"2018\nwo3 men2 yao4 ying2 !"<<endl;
}


L1-5 电子汪 (10 分)


题意:


据说汪星人的智商能达到人类 4 岁儿童的水平,更有些聪明汪会做加法计算。比如你在地上放两堆小球,分别有 1 只球和 2 只球,聪明汪就会用“汪!汪!汪!”表示 1 加 2 的结果是 3。


本题要求你为电子宠物汪做一个模拟程序,根据电子眼识别出的两堆小球的个数,计算出和,并且用汪星人的叫声给出答案。


思路:

直接输出a+b次狗叫就行


代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b;
    cin>>a>>b;
    for(int i=0;i<a+b;i++)cout<<"Wang!";
}


L1-6 福到了 (15 分)


题意:

“福”字倒着贴,寓意“福到”。不论到底算不算民俗,本题且请你编写程序,把各种汉字倒过来输出。这里要处理的每个汉字是由一个 N × N 的网格组成的,网格中的元素或者为字符 @ 或者为空格。而倒过来的汉字所用的字符由裁判指定。


思路:

输入按许顺入就行,输出的时候留一下,先倒着存好然后进行比较,相同就输出"bu yon dao le",具体就看代码吧。


代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=105;
char  m1[maxn][maxn],m2[maxn][maxn];
int n,m;
bool check()
{
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
            if(m1[i][j]!=m2[i][j]) return false;
    }
    return true;
}
int main()
{
    char x;
    int i,j,d;
    cin>>x>>n;(m=n);
    getchar();
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            m1[i][j]=getchar();
        }
        getchar();
    }
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            m2[i][j]=m1[n-i+1][n-j+1];
        }
    }
    if(check())
    {
        cout<<"bu yong dao le"<<endl;
    }
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
             if(m2[i][j]!=' ')
             {
                 cout<<x;
             }
             else
             {
                 cout<<' ';
             }
        }
        cout<<endl;
    }
}


L1-7 谁是赢家 (10 分)


题意:

某电视台的娱乐节目有个表演评审环节,每次安排两位艺人表演,他们的胜负由观众投票和 3 名评委投票两部分共同决定。规则为:如果一位艺人的观众票数高,且得到至少 1 名评委的认可,该艺人就胜出;或艺人的观众票数低,但得到全部评委的认可,也可以胜出。节目保证投票的观众人数为奇数,所以不存在平票的情况。本题就请你用程序判断谁是赢家。


思路:

稍微判断一下,对着题意模拟即可,判断其中一人赢需要的条件,然后else输出一下即可


代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int pa,pb;
    int d1,d2,d3;
    cin>>pa>>pb;
    cin>>d1>>d2>>d3;
    if(d1+d2+d3==0||(d1+d2+d3!=3)&&pa>pb)
    {
        cout<<"The winner is a: "<<pa<<" + "<<3-(d1+d2+d3)<<endl;
    }
    else   
    {
        cout<<"The winner is b: "<<pb<<" + "<<(d1+d2+d3)<<endl;
    }
    return 0;
}




相关文章
|
7月前
|
定位技术 Go
第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(银川),签到题5题
第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(银川),签到题5题
51 0
|
8月前
|
机器学习/深度学习 人工智能 BI
第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南),签到题5题
第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南),签到题5题
51 0
|
5月前
|
机器学习/深度学习 人工智能
第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明),签到题4题
第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明),签到题4题
32 0
|
6月前
|
人工智能 BI
第 46 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南),签到题2题
第 46 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南),签到题2题
40 2
|
10月前
|
C++
山东省第一届省赛 Ivan comes again
山东省第一届省赛 Ivan comes again
39 0
|
11月前
|
机器学习/深度学习 物联网 BI
第 46 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明),签到题3题
第 46 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明),签到题3题
104 0
|
机器学习/深度学习 Java 定位技术
第 46 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(沈阳),签到题5题
第 46 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(沈阳),签到题5题
212 0
|
算法
2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)热身赛 B.这是一道大水题(树状数组)
2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)热身赛 B.这是一道大水题(树状数组)
116 0
2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)热身赛 B.这是一道大水题(树状数组)