每日训练(三)

简介: day3

1.坑爹的宿舍

题目:在家里,从小娇生惯养的小明,从来都是想什么时候洗澡就什么时候洗澡。今年小明考上了某师范学院,住在宿舍413-602.每天洗澡的时候,总会感到很烦恼,因为宿舍只有一个洗澡房,只要有一个人在洗澡,其他人都要等待。今天小明就想,有什么方法可以使他们宿舍总等待时间最少。作为acm俱乐部的你能不能帮他解决这个问题。(洗了澡的宿友,就不需要算等待时间)

输入描述:输入的第一行为六个正整数,分别表示他们洗澡所需要的时间。

输出描述:对于每一组输入,输出他们总的等待时间和。

示例1

输入

1 2 3 4 5 6

3 1 1 3 1 1

输出

35

17

解题思路:只需要按顺序遍历数组,然后让当前数组元素的值乘以其余元素的数量(是当前元素的后面的元素的数量),然后全部加起来,就算出结果了。

#include<iostream>
using namespace std;
void bull_sort(int* N,int numsize)
{
    for(int i = 0;i<numsize;i++)
    {
        for(int j = 1;j<numsize-i;j++)
        {
            if(N[j-1]<N[j])
            {
                int temp = N[j-1];
                N[j-1] = N[j];
                N[j] = temp;
            }
        }
    }
}
int main()
{
    int a, b, c, d, e, f;
    while (cin >>a>>b>>c>>d>>e>>f)
    {
        int N[6] = { 0 };
        int count = 0;
        N[0] = a, N[1] = b, N[2] = c, N[3] = d, N[4] = e, N[5] = f;
        bull_sort(N, 6);
        for (int i = 0; i < 6; i++)
        {
            count += N[i] * (6 - i - 1);
        }
        cout << count << endl;
    }
    return 0;
}

image.gif

2.电梯的升降

题目:有一天,小明来到实验楼,看到保安在那里愁眉哭脸。小明好奇的走上去看了看,保安的手里有一份电梯升降任务表,由N个正整数组成,这些数字表示电梯按照给定的顺序停留的楼层号。电梯升一层花费5秒钟,降一层花费4秒钟,并且每次停留花费10秒钟。对于每一份任务表,你要计算出完成全部升降任务所花费的总时间。一开始,电梯在第0层,并且最终完成任务时电梯不必一定返回到0层。你能帮助保安算出完成全部升降任务所花费的总时间吗?

输入描述:有多组测试样例。每组测试样例包含一个正整数N,接下来是N个正整数。 在输入中,所有的数字都小于100。当N=0时,表示输入结束。

输出描述:对于每一组测试样例,在一行中输出总时间。

示例1

输入

1 2

3 2 3 1

0

输出

20

53

解题思路:通过观察,我们可以发现,每组的测试样例,都包含了升降序。只要让升序的时间加上降序的时间,就可以了。不过要注意的是,每一次开始,电梯都是从最下层开始的,因此我们需要先算出第一次搭电梯所需要的时间,这个时间不管怎么样都是升序的,因此需要(楼层数)*5+10;

#include<iostream>
using namespace std;
int main()
{
    while(1)
    {
        int N = 0;
        cin>>N;
        if(N==0)
        {
            break;
        }
        int arr[20] = {0};
        for(int i = 0;i<N;i++)
        {
            cin>>arr[i];
        }
        int count = 0;
        count += arr[0]*5+10;
        int dex = 0,pex = 1;
        while(arr[pex]!=0)
        {
            if(arr[dex]<arr[pex])
            {
                count+=(arr[pex]-arr[dex])*5+10;
            }
            else{
                count+=(arr[dex]-arr[pex])*4+10;
            }
            dex = pex;
            pex++;
        }
        cout<<count<<endl;
    }
    return 0;
}

image.gif

3.小明养猪

题目:小明明天就要大学毕业了,想到这四年来他都是在LOL中度过,什么专业知识都没学到,越想越后悔,越想越可怕,想着想着就睡着了。小明梦见了自己有个养猪场。在梦中,他养的猪一出生第二天开始就能每天中午生一只小猪,而且生下来的竟然都是母猪。不过光生小猪也不行,同时小明采用了一个很奇特的办法来管理他的养猪场:对于每头刚出生的小猪,在它生下第二头小猪后立马被杀掉,卖到超市里。假设在第一天,小明只买了一头刚出生的小猪,请问,在第N天晚上,小明的养猪场里还存有多少头猪?

输入描述:每行输入一个正整数N,代表小明创业的第N天。(0<N<20)

输出描述:对于每组数据,请在一行里输出第N天晚上养猪场里猪的数目,并且每组数据之间有一行相隔。

示例1

输入

2

3

输出

2


3

解题思路:其实这一算,一看,懂斐波那契数列的都懂,就是考斐波那契数列。

#include<iostream>
using namespace std;
int main()
{
    int N = 0;
    while(cin>>N)
    {
        int count = 1;
        int fab1 = 0,fab2 = 1;
        int tmp = 0;
        while(N--)
        {
            tmp = 0;
            tmp = fab1+fab2;
            fab1= fab2;
            fab2 = tmp;
            count = tmp;      
        }
        cout<<count<<endl<<endl;; 
    }
    return 0;
}

image.gif

4.剔除掉重复数字

题目:Again, we have another simple task for you. Thereare N integers, you need to sort them in ascending order.It looks like a very easy task, isn’t it? But youSHOULD notice that they may containredundant elements, you need to exclude them before you sort the integers.

输入描述:Input contains multiple cases, for each case, the number of integers N is given in the first line (1<=N<=10), following N integers in the second line, each of which is in the range [0, 65536].Input will stop at inputting N=0.

输出描述:For each case, output the sorted integers in each line.The elements areseparated by a single space (EXCEPT the last one!!!).

示例1

输入

5

4 1 2 3 3

0

输出

1 2 3 4

解题思路:创建一个新数组,那么,让作为这个数字的下标的元素+1,然后遍历这个数组,如果元素大于等于1的,就打印出来,而且是按递增顺序的。就是复杂读有点高。。。

#include<iostream>
using namespace std;
int main()
{
    while(1)
    {
        int N = 0;
        cin>>N;
        if(N==0)
        {
            break;
        }
        int arr[10] = {0};
        for(int i = 0;i<N;i++)
        {
            cin>>arr[i];
        }
        int brr[10000] = {0};
        for(int i = 0;i<N;i++)
        {
            brr[arr[i]]++;
        }
        for(int i = 0;i<10000;i++)
        {
            if(brr[i]>=1)
            {
                cout<<i<<" ";
            }
        }
        cout<<endl;
    }
    return 0;
}

image.gif


相关文章
|
7月前
|
机器学习/深度学习 弹性计算 TensorFlow
在阿里云上打造强大的模型训练服务
随着人工智能技术的迅猛发展,模型训练服务变得愈发关键。阿里云提供了一系列强大的产品,使得在云端轻松搭建、优化和管理模型训练变得更加便捷。本文将详细介绍如何使用阿里云的相关产品构建高效的模型训练服务。
518 0
|
4月前
|
Python
模型训练
【8月更文挑战第20天】模型训练。
57 0
|
3月前
|
人工智能 自动驾驶 数据库
领域大模型的训练需要什么数据?
领域大模型的训练需要什么数据?
169 0
|
4月前
|
机器学习/深度学习
DNN模型训练
【8月更文挑战第9天】DNN模型训练。
33 1
|
4月前
|
机器学习/深度学习 自然语言处理 数据可视化
训练模型
【8月更文挑战第1天】
51 2
|
XML 数据挖掘 数据格式
|
7月前
|
机器学习/深度学习 人工智能 边缘计算
为何人们喜欢推理胜于训练大模型?
在AI和机器学习领域,越来越多的人转向重视推理而非大规模模型训练。推理的即时性和高效性使其在需要快速响应的场景中占优,如自然语言处理和图像识别。推理过程的可视化能帮助用户理解模型决策,便于调试和提升性能。此外,推理在边缘计算和移动设备上的应用降低了延迟和带宽成本,同时保护了用户隐私。相比于训练大模型的高资源消耗,推理更为节能且成本效益高,尤其在数据挖掘和新知识探索方面展现出创新潜力。推理在实际应用中与训练模型相结合,提供了性能与成本的有效平衡。随着技术进步,推理将在推动人工智能领域发展中发挥更大作用。
|
机器学习/深度学习 数据处理
训练多个epoch来提高训练模型的准确率
训练多个epoch来提高训练模型的准确率
260 0
每日训练(五)
每日训练五,题目来源:牛客、力扣
每日训练(五)