问题标题: 酷町堂:乘坐电梯(水水水水水)(吴鲲鹏是大**)

0
0
已解决
李宜和
李宜和
高级启示者
高级启示者
乘坐电梯(lift)
经验值:800
包河区2021年小学信息学竞赛试题
不许抄袭,一旦发现,直接清空经验!
题目描述 Description
n个人从一楼乘电梯回家,给出他们想要到达的楼层,请计算所有人乘梯所用时间之和。时间的计算方法:在一楼进电梯,第1个人用时1秒,第2个人用时2秒,…,第i个人用时i秒;电梯每上升一层,用时1秒;出电梯时,在同一楼层,第1个人用时1秒,第2个人用时2秒,…,第i个人用时i秒。

输入描述 Input Description
两行。第一行一个正整数n,表示乘梯人数;第二行n个正整数,表示每个人要到达的楼层。

输出描述 Output Description
一行,一个整数,表示整个用时,单位是秒。

样例输入 Sample Input
3
13 18 13
样例输出 Sample Output
27
说明:电梯从1层到13层,用时12秒,从13层到18层,用时5秒,合计17秒;出电梯13层1+2=3秒,18层1秒,合计4秒。总用时6+17+4=27秒。
数据范围及提示 Data Size & Hint
数据范围:
1<=n<=13,2<=要到达的楼层<=32。

没思路......

李宜和在2021-11-12 19:07:08追加了内容

1

李宜和在2021-11-12 19:17:16追加了内容
#include<iostream> 
#include<iomanip> 
#include<cmath> 
#include<cstdio> 
using namespace std;
long long n,a[100000],sum,maxn=-0x3f3f3f3f,x[100000],y=1;
int main(){ 
	cin>>n;
	for(int i=1;i<=n;i++){
		sum+=i;
	}
	for(int i=1;i<=n;i++){
		cin>>a[i];
		maxn=max(a[i],maxn);
		x[a[i]]++;
	} 
	sum+=maxn-1;
	for(int i=1;i<=33;i++){
		if(a[i]!=0){
			while(x[i]--){
				sum+=y;
				y++;
			}
			y=1;
		}
	}
	cout<<sum;
	return 0; 
}
样例不对

 

李宜和在2021-11-12 19:19:39追加了内容

已解决。即将采纳


0
0
0
吕梓瑜
吕梓瑜
新手天翼
新手天翼

回答我的问题呗~

看看我的社**瞬间~

0
0
我要回答