首页 > 其他分享 >hbu2024暑假进阶训练营开营测试

hbu2024暑假进阶训练营开营测试

时间:2024-08-19 12:57:44浏览次数:15  
标签:进阶 开营 int 面积 score str hbu2024 完成度 100

目录

7-1 考试成绩

7-2 心理阴影面积


7-1 考试成绩

题目

Rain Sure同学在参加一场面试,一共有n道题目,他的初始分数为m分。

Rain Sure回答错一道题目就会扣一分,但是分数不会小于0;回答正确一道题目就会加一分。

给定一个长度为n的字符串,第i个字符如果为o,代表第i道题目Rain Sure回答正确了;如果第i个字符为x,代表第i道题目Rain Sure同学回答错误。

请你计算他的最终分数是多少。

输入格式

第一行两个整数分别代表n和m。

第二行一个长度为n的字符串,代表Rain Sure同学的回答情况。

1≤n≤2×105

0≤m≤2×105

保证字符串中只会出现ox

输出格式

请输出Rain Sure同学的最终分数。

测试样例一
3 0
xox
0
测试样例二
20 199999
oooooooooxoooooooooo
200017
测试样例三
20 10
xxxxxxxxxxxxxxxxxxxx
0
代码长度限制16 KB

时间限制400 ms

内存限制64 MB

栈限制8192 KB

解答

我的第一版

#include <bits/stdc++.h>
using namespace std;


int length,score;


int main(){
    cin>>length>>score;
    char str[length];
    cin>>str[length];
    for(int i=length-1;str[i];i--){
        if(str[i]=='o'){
            score+=1;
        }
        else if(str[i]=='x'){
            score-=1;
        }
        if(score<0){
            score=0;
        }
    }
    cout<<score<<endl;
    return 0;
}

改进后

#include <iostream>
using namespace std;

int main() {
    int length, score;
    cin >> length >> score;
    string str;
    cin >> str;

    for (int i = 0; i < length; i++) {
        if (str[i] == 'o') {
            score += 1;
        } else if (str[i] == 'x') {
            score -= 1;
            if (score < 0) {
                score = 0;
            }
        }
    }
    cout << score << endl;
    return 0;
}

标准答案

#include <bits/stdc++.h>
using namespace std;
int n,m;
string s;
//这里用的是string
int main(){
    cin >> n >> m;
    cin >> s;
    for(int i=0;i<n;i++){
        if(s[i]=='o') m++;
        else if(m>0) m--;
//这里else if(m>0)真有操作
    }
    cout << m;
}

感悟

不用想的太复杂

7-2 心理阴影面积

题目

xlyy.JPG

这是一幅心理阴影面积图。我们都以为自己可以匀速前进(图中蓝色直线),而拖延症晚期的我们往往执行的是最后时刻的疯狂赶工(图中的红色折线)。由红、蓝线围出的面积,就是我们在做作业时的心理阴影面积。

现给出红色拐点的坐标 (x,y),要求你算出这个心理阴影面积。

输入格式:

输入在一行中给出 2 个不超过 100 的正整数 x 和 y,并且保证有 x>y。这里假设横、纵坐标的最大值(即截止日和最终完成度)都是 100。

输出格式:

在一行中输出心理阴影面积。

友情提醒:三角形的面积 = 底边长 x 高 / 2;矩形面积 = 底边长 x 高。嫑想得太复杂,这是一道 5 分考减法的题……

输入样例:

90 10

输出样例:

4000
代码长度限制16 KB

时间限制400 ms

内存限制64 MB

栈限制8192 KB

解答

我的代码(正确)

#include <bits/stdc++.h>
using namespace std;

int m,n;
int s1,s2,s3;
int s;

int main(){
    cin>>m>>n;
    s1=0.5*m*n;
    s2=0.5*(100-n)*(100-m);
    s3=(100-m)*n;
    s=100*50-s1-s2-s3;
    cout<<s<<endl;
}

答案

#include <bits/stdc++.h>
using namespace std ;

int main(){
    int x,y;
    cin>>x>>y;
    cout<<(10000-(100-x+y)*100)/2;
    return 0;
}

感悟

理想总面积:10000

在这个公式中,10000代表的是理想情况下的总面积。假设完成度和时间都是从 0100,在时间轴上完美理想的完成度曲线将形成一个直角三角形,底边和高都是 100,所以理想的三角形面积是:

100×1002=5000\frac{100 \times 100}{2} = 50002100×100​=5000

但是在公式中用到了10000,这表明我们实际上考虑的是两个这样的三角形(或两个面积),所以它代表的是两个理想进度三角形的总面积。你可以将其看作是“全局理想进度”的最大值。

实际偏差项:(100 - x + y)

这里的 (100 - x + y) 是实际偏差的衡量方式。我们先看看 xy 是什么:

  • x:当前的时间
  • y:当前的完成度

那么 100 - x + y 表示的是从时间轴和完成度的角度出发,实际进度点与理想进度的差异:

  • 100 - x 表示的是,距离完成理想时间的剩余时间。
  • y 表示当前的完成度。

举个例子,如果时间为 x = 80 且当前完成度为 y = 50,那么理想进度应该是 80% 的完成度,但实际的进度是 50%,这意味着我们比理想进度落后了。

偏差影响面积:(100−x+y)×100(100 - x + y) \times 100(100−x+y)×100

这个部分计算了与理想进度相比的差异面积。它通过偏差项 (100 - x + y) 乘以最大时间 100 来衡量,这个值是一个近似的面积表示。因为这个值是在时间维度上乘以当前完成度的差值,表示的是偏差带来的“心理阴影”的影响面积。

最终面积计算:10000−(100−x+y)×1002\frac{10000 - (100 - x + y) \times 100}{2}210000−(100−x+y)×100​
  1. 10000是理想的总面积。
  2. 减去偏差带来的面积,这就是公式中的(100 - x + y) * 100
  3. 最后,我们将这个值除以 2,因为我们要考虑的是一个进度三角形面积的阴影部分。

总结公式

这个公式的主要思想是从理想的总面积 10000(表示理想进度的累计)中减去一个由实际偏差衡量的面积。通过除以 2,我们将结果调整为一个三角形面积的等价表示。这是一种简化的方式来衡量实际与理想进度之间的“心理阴影面积”。

可以想象,随着时间 x 的增加,如果完成度 y 赶不上理想进度曲线,那么 (100 - x + y) 这一项就会变大,造成更大的阴影面积,也就是公式计算出的结果会更大。
没看懂,还是我的方法易懂一点,如果有大佬看懂了可以讲一下。

未完待续

标签:进阶,开营,int,面积,score,str,hbu2024,完成度,100
From: https://blog.csdn.net/PGeorge6/article/details/141320870

相关文章

  • 书生大模型实战营3期 - 进阶岛 - 2 - Lagent 自定义你的 Agent 智能体
    文章目录闯关任务完成结果闯关任务任务描述:Lagent自定义你的Agent智能体任务文档:Lagent自定义你的Agent智能体完成结果使用Lagent自定义一个智能体,并使用LagentWebDemo成功部署与调用,记录复现过程并截图。环境准备/安装:#创建环境condacreate-n......
  • Springboot集成RabbitMQ从入门到进阶教学
    RabbitMQ基本信息RabbitMQ是什么1.基础概念消息代理(MessageBroker):RabbitMQ作为一个中间人,负责接收、存储和转发消息,确保消息从生产者发送到消费者。AMQP协议:高级消息队列协议(AdvancedMessageQueuingProtocol)是一种消息传递协议,旨在为消息的中间传递提供标准化......
  • Java巅峰之路---进阶篇---面向对象(一)
    static关键字介绍static表示静态,是java中的一个修饰符,可以修饰成员方法,成员变量。其中,被static修饰的成员变量,叫做静态变量;被static修饰的成员方法,叫做静态方法。静态变量调用方式:类名调用(推荐)、对象调用特点:●被该类所有对象共享●不属于对象,属于类●随着类的加载......
  • 模板——从初级到进阶
    目录前言:一、非类型模板参数二、模板的特化     2.1函数模板特化    2.2类模板特化            2.2.1全特化        2.2.2偏特化三、模板分离编译    3.1什么是分离编译    3.2 模......
  • 离线算法 莫队算法进阶
    前算是把之前的坑填一填吧。这篇文章主要包含带修莫队,二维莫队等莫队算法的进阶应用,观看前请确保您已经熟练掌握了基本的莫队算法,不会的可以戳这里。带修莫队众所周知,普通莫队是不支持修改的,因为我们为了得到更优的时间复杂度,需要将每次询问离线下来,打乱顺序。不过我们也......
  • 进阶-Linux目录结构与目录结构命令
    1、大纲日志查看四剑客:cat/head/tail/more/lesswcwhich/whereisdiff/vimdiff排序:sort,uniq时间:date打包压缩2、日志查询4剑客2.1概述查看日志不要使用,cat或vim,vi命令。未来的日志文件。有的日志可达:40G或以上如果使用cat查看,会刷屏根本停不下来如果使用vi/vim查看,......
  • Datawhale X 魔搭 AI夏令营-第四期(AIGC方向)-Task03-可图Kolors-进阶上分 实战优化
    往期内容:DatawhaleX魔搭AI夏令营-第四期(AIGC方向)-Task02-可图Kolors-精读代码实战进阶DatawhaleX魔搭AI夏令营-第四期(AIGC方向)-Task01-可图Kolors-LoRA风格故事挑战赛本期主要的学习内容为:使用ComfyUI工具来可视化文生图的工作流程界面,并基于Task01中LoRA微调得......
  • SpringMVC - 进阶
    1.Controller&RequestMapping@Controller用来标注在类上,表示这个类是一个控制器类,可以用来处理http请求,通常会和@RequestMapping一起使用。这个注解上面有@Component注解,说明被@Controller标注的类会被注册到spring容器中,value属性用来指定这个bean的名称@Target({Element......
  • 二叉树进阶之二叉搜索树:一切的根源
    前言:在学完了简单的容器与C++面向对象的三大特性之后,我们首先接触的就是map与set两大容器,但是这两个容器底层实现的原理是什么呢?我们不而知,今天,主要来为学习map与set的底层原理而打好基础,而二叉搜索树,则是一切的开端......一、二叉搜索树的定义与性质1.1、什么是二叉搜索树:......
  • 【C++进阶学习】第十三弹——C++智能指针的深入解析
    前言:在C++编程中,内存管理是至关重要的一个环节。传统的手动内存管理方式容易导致内存泄漏、悬挂指针等问题。为了解决这些问题,C++引入了智能指针。本文将详细讲解C++中智能指针的概念、种类、使用方法以及注意事项。目录一、引言二、智能指针的原理及目的2.1智能指针......