博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【每日一题】模仿数列(中兴笔试一)
阅读量:4156 次
发布时间:2019-05-25

本文共 1172 字,大约阅读时间需要 3 分钟。

【每日一题】中兴笔试一

文章目录


一、题目描述

  给定一个长度为 N 的正整数数列,其中第 i i i 个数为 a i a_i ai 。你可以进行任意次下述 “模仿” 操作:选择一个位置 i ( 1 ≤ i ≤ N ) i(1 \leq i \leq N) i(1iN) , 令 a i a_i ai 等于 a i + 1 a_{i+1} ai+1


二、输入/出描述

  输入描述:

  第一行一个正整数 N N N

  接下来 一行 N N N 个整数 a i a_i ai ,含义如体面所示。
   1 ≤ N ≤ 1 0 6 1 \leq N \leq 10^6 1N106 1 ≤ a i ≤ 1 0 9 1 \leq a_i \leq 10^9 1ai109

  输出描述:

  两个空格分隔的整数,第一个代表这个数列最大的数字和,第二个代表达成这个目标最少的操作次数


三、示例

  输入:

6

10 3 3 5 3 5

  输出:

35 3

  说明:

先选择位置 5 进行操作,变成 10 3 3 5 5 5,再选择位置 3 进行操作,变成 10 3 5 5 5 5,最后选择位置 2 进行操作,变成 10 5 5 5 5 5,数字和最大为35。


四、代码展示

#include
using namespace std;int main(){
long long n; long long arr[1000005]; long long sum=0, cnt=0; while(cin>>n) //输入一个正整数 N {
//输入一行 N 个整数 for (long long i = 0; i < n; i++) {
cin >> arr[i]; } //始于倒数第二个元素,终于第一个元素 for (long long i = n-2; i >= 0; i--) {
if(arr[i] < arr[i+1]) {
arr[i] = arr[i+1]; cnt ++; } sum += arr[i]; } sum += arr[n-1]; //最大数字和别忘记倒数第一个元素 cout << sum << " " << cnt << endl; } return 0;}

转载地址:http://qnwxi.baihongyu.com/

你可能感兴趣的文章
Android 的source (需安装 git repo)
查看>>
LOCAL_PRELINK_MODULE和prelink-linux-arm.map
查看>>
Simple Guide to use the gdb tool in Android environment
查看>>
Netconsole to capture the log
查看>>
Build GingerBread on 32 bit machine.
查看>>
How to make SD Card world wide writable
查看>>
Detecting Memory Leaks in Kernel
查看>>
Linux initial RAM disk (initrd) overview
查看>>
Timestamping Linux kernel printk output in dmesg for fun and profit
查看>>
There's Much More than Intel/AMD Inside
查看>>
CentOS7 安装MySQL 5.6.43
查看>>
使用Java 导入/导出 Excel ----Jakarta POI
查看>>
本地tomcat 服务器内存不足
查看>>
IntelliJ IDAE 2018.2 汉化
查看>>
Openwrt源码下载与编译
查看>>
我和ip_conntrack不得不说的一些事
查看>>
Linux 查看端口使用情况
查看>>
文件隐藏
查看>>
两个linux内核rootkit--之二:adore-ng
查看>>
两个linux内核rootkit--之一:enyelkm
查看>>