2016计蒜之道初赛第四场A

在每年的淘宝“双十一”时,访问量都会暴涨,服务器的请求会被流量分配程序按照一定策略,分发给不同的进程去处理。有一类请求,有两个进程可以接受分发的请求,其中一个进程所在服务器的配置、网络传输性能等都要优于另一个进程。流量分发程序可以知道队列中每个任务的预计处理时间,每次都会尽可能将队列中预计处理时间更多的任务分配给性能更优的进程。

假设队列当前一共有 n 个任务待分配,第 i 个任务的预计处理时间为a?i??(1≤i≤n)。由于服务存在冷启动问题,越靠后的进程,预计处理时间越短。而队列中的 最后一个任务 因为比较特殊,预计处理时间和之前的任务 无关。即前n−1 个任务的预计处理时间满足 a?1??>a?2??>...>a?n−1??。现在要从中选出一个任务列表,不能有任何两个任务在原队列中相邻。计算选出的任务队列预计处理时间之和的最大值。

输入格式

输入第一行有一个整数 n(1≤n≤10?4??),表示任务总数。

输入第二行有 n个整数 a?i??(0≤a?i??≤10?4??),表示每个任务的预计处理时间。

输出格式

输出一个整数,表示选出的任务的预计处理时间之和的最大值。

样例输入1

5
4 3 2 1 5

样例输出1

11

样例输入2

4
5 3 1 9

样例输出2

14

提示信息

对于第一组样例,选出的总预计处理时间最大为 4+2+5=11。

对于第二组样例,选出的总预计处理时间最大为 5+9=14。

首先对于整个数组(不包括最后一个数),偶数长度的话,就是奇数位相加的和+最后一个数,奇数长度的话,考虑数组最后一个数和最后一个数的大小关系。

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<algorithm>
 4 using namespace std;
 5 int main()
 6 {
 7     int n;
 8     int m;
 9     int a[100000];
10     int sum=0;
11     cin>>n;
12     for(int i=1;i<=n-1;i++)
13     {
14         cin>>a[i];
15     }
16     cin>>m;
17     if(n&1)
18     {
19         for(int i=1;i<=n-1;i+=2)
20         {
21             sum+=a[i];
22         }
23         sum+=m;
24     }
25     else
26     {
27         for(int i=1;i<=n-2;i+=2)
28         {
29             sum+=a[i];
30         }
31       //  cout<<sum<<endl;
32         sum+=max(a[n-1],m);
33     }
34     cout<<sum<<endl;
35     return 0;
36 }
时间: 2024-08-28 07:36:26

2016计蒜之道初赛第四场A的相关文章

2016计蒜之道 4,5场部分题解

在每年的淘宝“双十一”时,访问量都会暴涨,服务器的请求会被流量分配程序按照一定策 略,分发给不同的进程去处理.有一类请求,有两个进程可以接受分发的请求,其中一个进程所在服务器的配置.网络传输性能等都要优于另一个进程.流量分发程 序可以知道队列中每个任务的预计处理时间,每次都会尽可能将队列中预计处理时间更多的任务分配给性能更优的进程. 假设队列当前一共有 nnn 个任务待分配,第 iii 个任务的预计处理时间为 ai(1≤i≤n)a_i(1 \leq i \leq n)a?i??(1≤i≤n).由

计蒜之道 初赛 第三场 题解

腾讯手机地图 腾讯手机地图的定位功能用到了用户手机的多种信号,这其中有的信号的作用范围近,有的信号作用的范围则远一些.有的信号相对于用户在不同的方位强度是不同的,有的则是在任何一个方向上信号强度都一致的. 已知用户面向北方拿着自己的手机,在不同方位的各种信号覆盖区域可以被抽象成以用户为圆心的一系列扇形.已知每个扇形的半径 r,和每个扇形的两条边相对于正东方向的夹角度数.每个信号覆盖区域抽象出的扇形都可以通过从第一条边逆时针旋转到第二条边画出. <img src="http://res.ji

2017 计蒜之道 初赛 第五场 UCloud 的安全秘钥(中等)

每个 UCloud 用户会构造一个由数字序列组成的秘钥,用于对服务器进行各种操作.作为一家安全可信的云计算平台,秘钥的安全性至关重要.因此,UCloud 每年会对用户的秘钥进行安全性评估,具体的评估方法如下: 首先,定义两个由数字序列组成的秘钥 aa 和 bb近似匹配(\approx≈) 的关系.aa 和 bb 近似匹配当且仅当同时满足以下两个条件: |a|=|b|∣a∣=∣b∣,即 aa 串和 bb 串长度相等. 对于每种数字 cc,cc 在 aa 中出现的次数等于cc 在 bb 中出现的次数

2017 计蒜之道 初赛 第五场 D. UCloud 的安全秘钥(困难)

小数据打表,大数据暴力. 导致超时的主要原因是$m$小的询问次数太多,可以把$m≤10$的答案直接暴力打表存起来,$m>10$的用$C$题的方法即可. #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> #include <vector> #include <queue> #in

2017 计蒜之道 初赛 第五场 B. UCloud 的安全秘钥(简单)

暴力. 暴力枚举$S$串的每一个长度为$m$的子串,排序判断即可. #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> #include <vector> #include <queue> #include <stack> #include <map> #inc

2017 计蒜之道 初赛 第五场 C. UCloud 的安全秘钥(中等)

暴力. $O(m*n)$的算法可以通过此题,每次询问$O(m)$扫S数组,统计不同数字的个数,每次移动最多只会变化两个数字,如果不同数字个数为$0$,那么答案加$1$. #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> #include <vector> #include <queue&g

2017 计蒜之道 初赛 第五场 A. UCloud 机房的网络搭建

贪心. 从大到小排序之后进行模拟,注意$n=1$和$n=0$的情况. #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> #include <vector> #include <queue> #include <stack> #include <map> #in

计蒜之道 初赛 第三场--腾讯手机地图

题目大意是: 在坐标系里给你n个扇形的半径.起始,结束度数,计算扇形覆盖的面积. 如图: (因为现在无法提交了,所以无法验证代码,若有错的地方请指正) 这题首先要做的是对边的度数排序,不过是对所有度数排序,最开始想的时候只对扇形开始边的那个度数排序,写了半天一堆if else,后来突然想到了用所有边的度数排序. 首先需要对输进去每每条边度数进行处理,我用的是这个结构体 struct DU { int du;//度数 int r;//当前度数所对应的半径 bool if_end;//是否为扇形的结

2018 计蒜之道 初赛 第三场

A. 贝壳找房性价比 题解:按s排序后,斜率最大的点必定在相邻的两点之间. #pragma warning(disable:4996) #include<queue> #include<map> #include<string> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define ll long long #de