MT47. 种花
描述
输入描述
第一行包含一个整数 n 。输出描述
输出完成计划所需的最少天数。示例1
输入:
5 4 1 8 2 5
输出:
14
示例2
输入:
5 1 1 1 1 1
输出:
1
C++ 解法, 执行用时: 7ms, 内存消耗: 1624KB, 提交时间: 2020-08-18
#ifdef debug #include <time.h> #endif #include <iostream> #include <algorithm> #include <vector> #include <string.h> #include <map> #include <set> #include <stack> #include <queue> #include <math.h> #define MAXN ((int)1e5+7) #define ll long long int #define INF (0x7f7f7f7f) #define fori(lef, rig) for(int i=lef; i<=rig; i++) #define forj(lef, rig) for(int j=lef; j<=rig; j++) #define fork(lef, rig) for(int k=lef; k<=rig; k++) #define QAQ (0) using namespace std; #define show(x...) \ do { \ cout << "\033[31;1m " << #x << " -> "; \ err(x); \ } while (0) void err() { cout << "\033[39;0m" << endl; } template<typename T, typename... A> void err(T a, A... x) { cout << a << ' '; err(x...); } namespace FastIO{ char print_f[105]; void read() {} void print() { putchar('\n'); } template <typename T, typename... T2> inline void read(T &x, T2 &... oth) { x = 0; char ch = getchar(); ll f = 1; while (!isdigit(ch)) { if (ch == '-') f *= -1; ch = getchar(); } while (isdigit(ch)) { x = x * 10 + ch - 48; ch = getchar(); } x *= f; read(oth...); } template <typename T, typename... T2> inline void print(T x, T2... oth) { ll p3=-1; if(x<0) putchar('-'), x=-x; do{ print_f[++p3] = x%10 + 48; } while(x/=10); while(p3>=0) putchar(print_f[p3--]); putchar(' '); print(oth...); } } // namespace FastIO using FastIO::print; using FastIO::read; int n, m, Q, K, a[MAXN], dp[MAXN]; signed main() { #ifdef debug freopen("test.txt", "r", stdin); clock_t stime = clock(); #endif read(n); for(int i=1; i<=n; i++) read(a[i]); dp[1] = a[1]; // for(int i=1; i<=n; i++) show(i, a[i]); for(int i=2; i<=n; i++) if(a[i] <= a[i-1]) { dp[i] = dp[i-1]; } else { dp[i] = dp[i-1] + (a[i] - a[i-1]); } // for(int i=1; i<=n; i++) show(dp[i]); printf("%d\n", dp[n]); #ifdef debug clock_t etime = clock(); printf("rum time: %lf 秒\n",(double) (etime-stime)/CLOCKS_PER_SEC); #endif return 0; }
C++ 解法, 执行用时: 8ms, 内存消耗: 1272KB, 提交时间: 2020-07-28
#include<bits/stdc++.h> using namespace std; typedef long long LL; int n,a[100005]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int ans=0; cin>>n; for(int i=1;i<=n;++i) cin>>a[i]; for(int i=1;i<=n;++i) { if(a[i]<=a[i+1])//如果前一个位置比后一个位置小,则种后一个的同时把前一个种了 continue; ans+=a[i]-a[i+1];//如果前一个位置比后一个位置大,先把前一个种a[i]-a[i+1] } cout<<ans<<endl; return 0; }