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; }