列表

详情


NC54793. 城市建造

描述

程序员的能力是有极限的,越是玩弄代码,就越会发现程序员的能力是有极限的......除非不当程序员!

经过一番思考,你决定去当包工头。公司非常重用你,并给你一块地。起初,这块地上的大楼高度都为 0。公司希望你能按照要求在一条直线上建造座大楼,将大楼的高度建造为。由于你是学过程序的,你的施工队每天可以选择编号范围 和 ,然后施工队会将 中的大楼高度增加1米:假设大楼原来的高度是,那么的高度会增加1米。为了突破你的极限,你需要写一个程序来计算完成这个项目的最少天数。

输入描述

第一行是一个整数,表示有 组数据。接下来有 行,每行一个整数,表示需要建造 座大楼,下一行有 个数字,表示大楼的目标高度。



输出描述

输出所需的最小天数,使得大楼的高度刚好到达目标高度。

示例1

输入:

2
5
1 3 2 3 1
8
1 5 3 7 2 6 4 8

输出:

4
17

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 59ms, 内存消耗: 304K, 提交时间: 2021-12-02 21:04:05

#include<stdio.h>

int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,k;
		scanf("%d",&n);
		int i;
		int fast=0,sum=0;
		for( i=1;i<=n;i++)
		{
			scanf("%d",&k);
			if( k>fast) 
			sum=sum+(k-fast);
			
			fast=k;
		}
		printf("%d\n",sum);
		
	}
	return 0;
 }

C++(g++ 7.5.0) 解法, 执行用时: 166ms, 内存消耗: 4388K, 提交时间: 2023-04-24 12:21:07

#include<bits/stdc++.h>
using namespace std;
int a[100000];
int main()
{
	int i,j,t,n;
	cin>>t;
	while(t--)
	{
		cin>>n;
		for(i=1;i<=n;i++)
			cin>>a[i];
				int sum=a[1];
				for(i=2;i<=n;i++)
			if(a[i]>a[i-1])
				sum+=a[i]-a[i-1];
		cout<<sum<<endl;}
	return 0;
}

C++(clang++ 11.0.1) 解法, 执行用时: 242ms, 内存消耗: 412K, 提交时间: 2022-10-30 19:00:40

#include <bits/stdc++.h>
using namespace std;
int n,m,x,y,t;
int main(){
cin>>t;
while(t--)
{
	cin>>n>>x;
	m=x;
	for(int i=2;i<=n;i++)
	{
		cin>>y;
		if(y>x)m+=y-x;
		x=y;
	 }
	 cout<<m<<endl;
	 
}
	return 0;
}

上一题