2020暑假牛客多校训练赛第五场

2020暑假牛客多校训练赛第五场总结&题解

关于比赛:

这次比赛相对上一场,个人和团队的状态有所好转。不管是精确地找到了签到大模拟(水题万岁)还是在I题上的思路交流,个人感觉整场比赛还是团队发挥比较正常的。除了E题实在是受限于语言,如果当时尽早使用python可能会好很多。同时自我反思一下,作为一个ACMer,需要掌握的语言不能局限于C/C++,python也好,Java也罢,总是要多去学习了解应用的,这样不只在比赛中可以更灵活地处理问题,也可以为自己以后的发展铺路。

同时还需要指出的是,队伍在做题中较容易出现思路断层,这可能和一开始的做题策略有关,之后还是需要不断改进团队做题的方法,学习并适应优秀ACM队伍做题的节奏,争取更快得进步。

题解:

F.DPS

题目描述:

这几次比赛最简单的一次水题,纯正的大模拟!

题目大概意思是:给出一些数值,画一幅柱状图,这幅图中的数值的最大值用一个*来表示。柱状图的形状如图:

在这里插入图片描述

并且给出了边框小横线的数量函数:Si=⌈50 * di/max(di)⌉现在给你一些数值,要求你画出对应的柱状图。

题解:

基本就是个模拟题,注意一下max(di)的意思是所有di的最大值而不是1~i这i个数的最大值。剩下的就是输出格式要标准。

AC代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
#define debug(x) cout << "########" << x << "########" << endl
using namespace std;
const int maxn = 1e3 + 17;
int a[maxn],b[maxn];
int main()
{
    int n,maxm = 0;
    scanf("%d",&n);
    for(int i = 1;i <= n;i++){
        scanf("%d",&a[i]);
        maxm = max(maxm,a[i]);
    }
    for(int i = 1;i <= n;i++){
        int temp = ceil((50.0 / (double)maxm) * (double)a[i]);
        cout << "+";
        for(int j = 1;j <= temp;j++) cout << '-';
        cout << '+' << endl;
        cout << '|' ;
        for(int j = 1;j <= temp;j++){
            if(a[i] == maxm && j == temp){
                cout << '*';
            }
            else cout << ' ';
        }
        cout << '|';
        cout << a[i] << endl;
        cout << "+";
        for(int j = 1;j <= temp;j++) cout << '-';
        cout << '+' << endl;
    }
    return 0;
}

I.Hard Math Problem

题目描述:

一道打着ACM的数学题

现在需要在MC种建造三种城市,G,H,E。给定一个m*n的区域,要求对于每一个G都必须至少有一个H和E与它相邻(换句话说就是有公共边),现在问你在n,m区域的时候,G所占的比例会有多大。

题解:

这个题其实就是一个思路问题,可能会出现5/9的答案这个应该好解释。画一个九宫格就知道了。

但是正确的结果显然不是这样的,正确的画法应该是:
在这里插入图片描述

就像这个样子向上下左右四个方位延申。这个样子求出的结果就是2/3。

AC代码:

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    cout << "0.666667" << endl;
    return 0;
}

代码简单的离谱对不对

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CUCKyrie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值