每日训练(三)

简介: 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


相关文章
|
11月前
|
安全 API 开发者
探索Python中的异步编程:从基础到实战
【9月更文挑战第35天】本文将引导你走进Python的异步世界,从理解异步编程的基本概念开始,逐步深入到asyncio库的核心组件和高级功能。我们将通过实际代码示例,展示如何利用这些工具构建高效、可扩展的应用程序。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和实用技巧,帮助你在编程之路上更进一步。
|
JSON 安全 前端开发
post为什么会发送两次请求?
post为什么会发送两次请求?
388 70
|
10月前
|
前端开发 API UED
React 图片轮播 Carousel:从入门到进阶
本文介绍了在 React 中实现图片轮播(Carousel)的方法,从基础安装和配置 `react-slick` 开始,逐步讲解了常见问题如图片路径、性能优化、自定义样式和交互处理,以及高级话题如动态数据加载和响应式设计。通过详细示例,帮助开发者避免易错点,提升轮播图的用户体验。
244 3
|
11月前
|
传感器 监控 物联网
新技术趋势与应用在科技日新月异的今天,新兴技术如物联网、虚拟现实等正以前所未有的速度改变着我们的生活。本文将深入探讨这些技术的发展趋势和应用场景,揭示它们如何塑造未来。
本文聚焦于物联网和虚拟现实等新兴技术的发展动态及其广泛应用。通过分析当前技术进展、实际应用案例以及未来发展的可能性,本文揭示了这些技术如何深刻影响各行各业,并对未来的趋势进行了展望。
|
XML 数据格式 Python
Python技巧:将HTML实体代码转换为文本的方法
在选择方法时,考虑到实际的应用场景和需求是很重要的。通常,使用标准库的 `html`模块就足以满足大多数基本需求。对于复杂的HTML文档处理,则可能需要 `BeautifulSoup`。而在特殊场合,或者为了最大限度的控制和定制化,可以考虑正则表达式。
519 12
|
Linux iOS开发 MacOS
CMake调用第三方库的两种方法
这两种方法都可以用来在 CMake 中调用第三方库,选择哪种方法取决于你的具体需求和第三方库的提供情况。
1063 0
|
前端开发 NoSQL JavaScript
node-blog:用 node 搭建的个人开源博客
node-blog:用 node 搭建的个人开源博客
197 0
|
JavaScript 前端开发 数据库
数据库测试场景实践总结
本文介绍了数据库超时和应用锁表SSDB测试场景的验证方法,通过锁定数据表模拟写入失败情况,并利用SSDB进行重试。测试需开发人员配合验证功能。同时,提供了SSDB服务器登录、查询队列数量及重启服务等常用命令。适用于验证和解决数据库写入问题。
95 7
|
JavaScript Java 测试技术
基于SpringBoot+Vue的医疗废弃物收运管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的医疗废弃物收运管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
144 6