2016计蒜之道初赛第四场A
在每年的淘宝“双十一”时,访问量都会暴涨,服务器的请求会被流量分配程序按照一定策略,分发给不同的进程去处理。有一类请求,有两个进程可以接受分发的请求,其中一个进程所在服务器的配置、网络传输性能等都要优于另一个进程。流量分发程序可以知道队列中每个任务的预计处理时间,每次都会尽可能将队列中预计处理时间更多的任务分配给性能更优的进程。
假设队列当前一共有 n 个任务待分配,第 i 个任务的预计处理时间为ai(1≤i≤n)。由于服务存在冷启动问题,越靠后的进程,预计处理时间越短。而队列中的 最后一个任务 因为比较特殊,预计处理时间和之前的任务 无关。即前n−1 个任务的预计处理时间满足 a1>a2>...>an−1。现在要从中选出一个任务列表,不能有任何两个任务在原队列中相邻。计算选出的任务队列预计处理时间之和的最大值。
输入格式
输入第一行有一个整数 n(1≤n≤104),表示任务总数。
输入第二行有 n个整数 ai(0≤ai≤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 }
分类:
某些比赛
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~