• 2016计蒜之道初赛第四场A


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

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

    输入格式

    输入第一行有一个整数 n(1n104​​),表示任务总数。

    输入第二行有 n个整数 ai​​(0ai​​104​​),表示每个任务的预计处理时间。

    输出格式

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

    样例输入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 }
  • 相关阅读:
    C# 静态类和非静态类的区别
    C# 集合
    C#字符串
    C# 虚方法 抽象方法 接口
    C#常用的关键字
    扫描功能小结 (扫描二维码、条形码)
    QQ空间/朋友圈类界面的搭建
    tableview左滑按钮 tableviewcell自定义左滑按钮
    UITextView 开始编辑时,文字没有左上角对齐解决办法 tableview整体上移
    图片、视频上传小记(基于七牛云)
  • 原文地址:https://www.cnblogs.com/yinghualuowu/p/5578318.html
Copyright © 2020-2023  润新知